Connect with us

WORDPRESS

Maintaining High Performance in Our Local Development App for Enhanced UX – WordPress.com News

Published

on

Using WordPress Components and Tailwind CSS in our Local Development App  – WordPress.com News

In this post, we share the strategies and techniques we’ve implemented to ensure our Electron-based Studio app runs smoothly, delivering a high-performance user experience.

We’re back with Part 2 of our “Building Studio in Public” series! Today, we’re diving into the challenges we faced while optimizing Studio’s performance. This post will be especially valuable if you’re developing an Electron app and dealing with performance issues or if you’re simply curious about how the Studio app functions behind the scenes.

If you’re following the series, be sure to check out our first post: Using WordPress Components and Tailwind CSS in our Local Development App.

As a reminder, Studio is our free, open source local development app. It’s based on Electron (the focus of today’s post!) and is currently available for Mac and Windows.

Overcoming the challenges of running local development sites

Running a local development site can be complex, often requiring the setup of multiple tools. A typical approach involves using multi-container applications like Docker and Docker Compose in addition to setting up a web server with a WordPress installation and a MySQL database. This process can become even more challenging when managing multiple sites simultaneously.

Studio was designed to simplify this process, allowing users to set up sites quickly without any prior configuration. This capability is powered primarily by the WordPress Playground project, which enables anyone to run a fully functional WordPress site within a browser or Node.js environment. 

For each site created with Studio, we run a basic web server using ExpressJS to handle web requests and use WordPress Playground to process them.

Initially, this was implemented in the Electron-based Studio app without noticeable performance issues.

However, as we expanded our testing across Mac and Windows, we observed some slowness in UI interactions when managing and navigating sites. Everything seemed properly configured, but something was clearly off.

Keeping the main process lightweight

As we delved into these performance issues, we discovered that running sites within Electron’s main process was the primary cause of the slowdown. Processing web requests and executing the associated PHP code for WordPress in the main process added extra load, which negatively impacted other operations, aka that UI slowness we were seeing.

screenshots showing the differences of starting a site and creating a site in Electron's main process vs the dedicated process

Electron’s documentation is incredibly valuable for addressing performance issues, particularly those related to blocking the main process. It was clear that maintaining a lightweight main process is crucial, and avoiding heavy or blocking operations in this context is essential. However, this realization presented a new challenge: how do we detach the running sites from the main process?

Spawning dedicated processes

To tackle the performance issues, we adopted the tried-and-true strategy of “divide and conquer.” 

The idea was to run Studio’s sites in dedicated processes, separate from the main one. Since Electron is built on Node.js, spawning child processes seemed like a plausible solution. However, Electron also offers a utilityProcess utility, which behaves similarly to Node’s child processes, but operating at the browser level and aligning more closely with Electron’s app model.

While this approach promised to alleviate the load on the main process, it also introduced additional complexity. We had to manage these new processes and handle communication between the main and dedicated processes via messages. Additionally, we encountered challenges related to the build configuration and using Webpack for building the application.

Below is a full example of implementing this approach (click to expand each example to see the full code):

Dedicated Process Manager (process.js):
const { app, utilityProcess } = require( 'electron' );

// This path should be calculated dynamically as the file could be in
// different locations depending on the build configuration
const PROCESS_MODULE_PATH = './process-child.js';

const DEFAULT_RESPONSE_TIMEOUT = 120000;

class Process {
	lastMessageId = 0;
	process;
	ongoingMessages = {};

	async init() {
		return new Promise( ( resolve, reject ) => {
			const spawnListener = async () => {
				// Removing exit listener as we only need it upon starting
				this.process?.off( 'exit', exitListener );
				resolve();
			};
			const exitListener = ( code ) => {
				if ( code !== 0 ) {
					reject( new Error( `process exited with code ${ code } upon starting` ) );
				}
			};

			this.process = utilityProcess
				.fork( PROCESS_MODULE_PATH, [], {
					serviceName: 'dedicated-process',
					env: {
						...process.env,
						IN_CHILD_PROCESS: 'true',
						APP_NAME: app.name,
						// Note that Electron context won't be available in the dedicated process.
						// Add here other environment variables that might be needed.
					},
				} )
				.on( 'spawn', spawnListener )
				.on( 'exit', exitListener );
		} );
	}

	// This is an example function. Feel free to add more for other purposes.
	async exampleFunc( command, args ) {
		const message = 'exampleFunc';
		const messageId = this.sendMessage( message, { command, args } );
		return await this.waitForResponse( message, messageId );
	}

	// It's important to keep in mind that the process will be running
	// until it's explicitly stopped.
	async stop() {
		await this.killProcess();
	}

	sendMessage( message, data ) {
		const process = this.process;
		if ( ! process ) {
			throw Error( 'The process is not running' );
		}

		const messageId = this.lastMessageId++;
		process.postMessage( { message, messageId, data } );
		return messageId;
	}

	async waitForResponse( originalMessage, originalMessageId, timeout = DEFAULT_RESPONSE_TIMEOUT ) {
		const process = this.process;
		if ( ! process ) {
			throw Error( 'The process is not running' );
		}
		if ( this.ongoingMessages[ originalMessageId ] ) {
			throw Error(
				`The 'waitForResponse' function was already called for message ID ${ originalMessageId } from the message '${ originalMessage }'. 'waitForResponse' may only be called once per message ID.`
			);
		}

		return new Promise( ( resolve, reject ) => {
			const handler = ( { message, messageId, data, error } ) => {
				if ( message !== originalMessage || messageId !== originalMessageId ) {
					return;
				}
				process.removeListener( 'message', handler );
				clearTimeout( timeoutId );
				delete this.ongoingMessages[ originalMessageId ];
				if ( typeof error !== 'undefined' ) {
					console.error( error );
					reject( new Error( error ) );
					return;
				}
				resolve( data );
			};

			const timeoutHandler = () => {
				reject( new Error( `Request for message ${ originalMessage } timed out` ) );
				process.removeListener( 'message', handler );
			};
			const timeoutId = setTimeout( timeoutHandler, timeout );
			const cancelHandler = () => {
				clearTimeout( timeoutId );
				reject( {
					error: new Error( `Request for message ${ originalMessage } was canceled` ),
					canceled: true,
				} );
				process.removeListener( 'message', handler );
			};
			this.ongoingMessages[ originalMessageId ] = { cancelHandler };

			process.addListener( 'message', handler );
		} );
	}

	async killProcess() {
		const process = this.process;
		if ( ! process ) {
			throw Error( 'The process is not running' );
		}

		this.cancelOngoingMessages();

		return new Promise( ( resolve, reject ) => {
			process.once( 'exit', ( code ) => {
				if ( code !== 0 ) {
					reject( new Error( `Process exited with code ${ code } upon stopping` ) );
					return;
				}
				resolve();
			} );
			process.kill();
		} ).catch( ( error ) => {
			console.error( error );
		} );
	}

	cancelOngoingMessages() {
		Object.values( this.ongoingMessages ).forEach( ( { cancelHandler } ) => {
			cancelHandler();
		} );
	}
}

module.exports = Process;

Dedicated Process Logic (process-child.js):
// Replace with initial setup logic based on the environment variables if needed.
console.log( `Run initial setup for app: ${ process.env.APP_NAME }` );

const handlers = {
	exampleFunc: createHandler( exampleFunc ),
};

async function exampleFunc( data ) {
	const { command, args } = data;
	// Replace this with the desired logic.
	console.log( `Run heavy operation ${ command } with args: ${ args }` );
}

function createHandler( handler ) {
	return async ( message, messageId, data ) => {
		try {
			const response = await handler( data );
			process.parentPort.postMessage( {
				message,
				messageId,
				data: response,
			} );
		} catch ( error ) {
			process.parentPort.postMessage( {
				message,
				messageId,
				error: error?.message || 'Unknown Error',
			} );
		}
	};
}

process.parentPort.on( 'message', async ( { data: messagePayload } ) => {
	const { message, messageId, data } = messagePayload;
	const handler = handlers[ message ];
	if ( ! handler ) {
		process.parentPort.postMessage( {
			message,
			messageId,
			error: Error( `No handler defined for message '${ message }'` ),
		} );
		return;
	}
	await handler( message, messageId, data );
} );
Run example (main.js):
async function runExample() {
	const process = new Process();
	await process.init();
	await process.exampleFunc( 'my-command', [ 'example', 100 ] );
}

…
app.whenReady().then( () => {
	runExample();
} );
…

Note: The code above has been adapted for use in a generic example Electron project. You can test it using Electron Fiddle.

Build configuration and Webpack

Our project build setup relies on Forge and Webpack. Implementing dedicated processes introduced extra complexity, as we initially bundled all the code into a single file. 

However, since dedicated processes require their code to run in isolation from the main process, we needed to separate the bundles. After adjusting the Webpack configuration, we successfully set it up to produce the necessary files.

Below is an example of the changes we applied (click to expand each example to see the full code):

Before:
import { type Configuration } from 'webpack';

export const mainConfig: Configuration = {
	// This is the main entry point for your application, it's the first file
	// that runs in the main process.
	entry: './src/index.ts',

...
After:
import path from 'path';
import { type Configuration, DefinePlugin } from 'webpack';

// Extra entries are bundled separately from the main bundle. They are primarily used
// for worker threads and forked processes, which need to be loaded independently.
const extraEntries = [
	{
		name: 'siteServerProcess',
		path: './src/lib/site-server-process-child.ts',
		exportName: 'SITE_SERVER_PROCESS_MODULE_PATH',
	},
	// Here you can configure other dedicated processes
];

export default function mainConfig( _env: unknown, args: Record ) {
	const isProduction = args.mode === 'production';

	// Generates the necessary plugins to expose the module path of extra entries.
	const definePlugins = extraEntries.map( ( entry ) => {
		// The path calculation is based on how the Forge's webpack plugin generates the path for Electron files.
		// Reference: https://github.com/electron/forge/blob/b298b2967bdc79bdc4e09681ea1ccc46a371635a/packages/plugin/webpack/src/WebpackConfig.ts#L113-L140
		const modulePath = isProduction
			? `require('path').resolve(__dirname, '..', 'main', '${ entry.name }.js')`
			: JSON.stringify( path.resolve( __dirname, `.webpack/main/${ entry.name }.js` ) );
		return new DefinePlugin( {
			[ entry.exportName ]: modulePath,
		} );
	} );

	return {
		...mainBaseConfig,
		plugins: [ ...( mainBaseConfig.plugins || [] ), ...definePlugins ],
	};
}

export const mainBaseConfig: Configuration = {
	entry: {
		// This is the main entry point for your application, it's the first file
		// that runs in the main process.
		index: './src/index.ts',
		// Inject extra entries into the Webpack configuration.
		// These entries are primarily used for worker threads and forked processes.
		...extraEntries.reduce( ( accum, entry ) => {
			return { ...accum, [ entry.name ]: entry.path };
		}, {} ),
	},

...

Note: The code above is directly from Studio, written in TypeScript.

Bonus tip: avoid blocking file system operations

We also noticed performance issues when using synchronous file system operations when building Studio, specifically when using the synchronous versions of functions, which can block the main process. To prevent this, it’s best to use the promise-based or callback versions of these functions.

For example, instead of using:

fs.readFileSync( path, 'utf8' );

Use:

await fs.readFile( path, 'utf8' );

Ready to build?

If this information has piqued your interest, or if you’re developing WordPress sites, start leveraging the power of Studio today. It’s free, it’s open source, and it seamlessly integrates into your development workflow.

After downloading Studio, connect it to your WordPress.com account (free or paid) to unlock features like Demo Sites.

Want to contribute to Studio? Here are some GitHub issues you can dive into:


Join 108.4M other subscribers

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address

WORDPRESS

11 Best Side Hustles to Take Up In 2024 For Extra Income

Published

on

By

11 Best Side Hustles to Take Up In 2024 For Extra Income

The concept of a side hustle has evolved dramatically in recent years. Once seen as a temporary means to make ends meet, side hustles have now become a mainstream way for people to diversify their income streams, pursue passions, and achieve financial goals. As we enter 2024, the gig economy continues to expand, offering more opportunities than ever for people to earn extra income. Whether you’re looking to supplement your full-time job, save for a big purchase, or even transition into self-employment, there’s a side hustle out there for you. Here are the 11 best side hustles to take up in 2024.

1. Freelance Writing and Content Creation

As businesses increasingly rely on digital content to connect with customers, the demand for skilled writers and content creators has surged. Freelance writing offers flexibility, the opportunity to work on diverse projects, and the potential to earn a significant income. If you have a knack for storytelling, persuasive writing, or expertise in a particular niche, freelance writing could be an excellent side hustle.

  • Platforms to Consider: Upwork, Fiverr, and Contently are popular platforms where you can find freelance writing gigs.
  • Income Potential: Depending on your experience and the type of content, freelance writers can earn anywhere from $50 to $500 per article or more for specialized work.

2. Online Tutoring and Teaching

The shift towards online learning during the pandemic has created a sustained demand for online tutors and educators. Whether you excel in academic subjects, languages, or even skills like music or coding, online tutoring can be a lucrative side hustle.

  • Platforms to Consider: Websites like VIPKid, Tutor.com, and Teachable allow you to connect with students and create courses.
  • Income Potential: Online tutors can earn between $15 to $50 per hour, depending on the subject and your qualifications.

3. Dropshipping and E-commerce

E-commerce continues to grow, and with platforms like Shopify and WooCommerce, starting your own online store has never been easier. Dropshipping is an attractive option because it allows you to sell products without holding inventory. You simply partner with suppliers who ship products directly to your customers.

  • Platforms to Consider: Shopify, WooCommerce, and Oberlo for dropshipping services.
  • Income Potential: The income from dropshipping can vary widely, but successful stores can generate thousands of dollars per month.

4. Social Media Management

With businesses increasingly relying on social media for marketing, the demand for social media managers has skyrocketed. If you’re savvy with platforms like Instagram, Facebook, TikTok, and LinkedIn, you can help businesses grow their online presence, engage with their audience, and develop brand loyalty.

  • Platforms to Consider: You can find clients through Upwork, LinkedIn, or by networking with local businesses.
  • Income Potential: Social media managers can charge $300 to $1,500+ per month per client, depending on the scope of work.

5. Virtual Assistance

As remote work becomes the norm, the need for virtual assistants (VAs) has increased. VAs handle tasks like email management, scheduling, customer service, and even content creation. This side hustle is ideal for organized individuals with strong communication skills.

  • Platforms to Consider: Upwork, Zirtual, and Belay are popular platforms for finding VA gigs.
  • Income Potential: Virtual assistants can earn between $15 to $50 per hour, depending on their skill set and the services offered.

6. Podcasting

Podcasting has exploded in popularity, and it’s not just for entertainment—many podcasters earn money through sponsorships, advertising, and listener donations. If you have a passion for a particular topic and enjoy speaking, starting a podcast could be a rewarding side hustle.

  • Platforms to Consider: Anchor.fm, Buzzsprout, and Patreon for monetization options.
  • Income Potential: While it takes time to build an audience, successful podcasters can earn hundreds to thousands of dollars per episode through ads and sponsorships.

7. Stock Photography

If you have a good eye for photography, stock photography can be a passive income source. Websites like Shutterstock, Adobe Stock, and Getty Images allow photographers to upload their images and earn money each time someone purchases a license.

  • Platforms to Consider: Shutterstock, Adobe Stock, and Getty Images.
  • Income Potential: Earnings depend on the number of downloads your photos receive, but stock photographers can make anywhere from a few dollars to several thousand dollars monthly.

8. Blogging and Affiliate Marketing

Blogging remains a viable way to earn extra income, especially when combined with affiliate marketing. By creating content around a niche you’re passionate about, you can attract an audience and monetize through affiliate links, advertising, and sponsored posts.

  • Platforms to Consider: WordPress for blogging, Amazon Associates, and ShareASale for affiliate marketing.
  • Income Potential: Income can vary widely, but successful bloggers can earn anywhere from a few hundred to several thousand dollars per month.

9. Online Coaching and Consulting

If you have expertise in a particular field, offering online coaching or consulting services can be a highly profitable side hustle. Whether you’re skilled in business, fitness, life coaching, or another area, you can help others achieve their goals while earning extra income.

  • Platforms to Consider: LinkedIn for networking, Zoom for virtual sessions, and websites like Coach.me.
  • Income Potential: Coaches and consultants can charge $50 to $300+ per hour, depending on their expertise and the market demand.

10. Airbnb Hosting

If you have extra space in your home or a property you’re not using full-time, renting it out on Airbnb can be a lucrative side hustle. With the right location and amenities, you can earn a significant income by hosting travelers.

  • Platforms to Consider: Airbnb, Vrbo, and Booking.com for short-term rentals.
  • Income Potential: Depending on your location and the property, Airbnb hosts can earn anywhere from $500 to several thousand dollars per month.

11. YouTube Content Creation

YouTube remains one of the best platforms for content creators to earn money. Whether you’re interested in vlogging, tutorials, product reviews, or any other niche, you can monetize your channel through ads, sponsorships, and merchandise sales.

  • Platforms to Consider: YouTube for content hosting, and Teespring or Patreon for additional monetization.
  • Income Potential: Successful YouTubers can earn anywhere from $1,000 to $100,000+ per year, depending on their audience size and engagement.

How to Choose the Right Side Hustle for You

With so many options available, it can be challenging to decide which side hustle is the best fit for you. Here are some factors to consider:

  1. Time Commitment: Consider how much time you can realistically dedicate to a side hustle. Some opportunities, like freelance writing or virtual assistance, can be done part-time, while others, like running an Airbnb, may require more of your attention.
  2. Skill Set: Reflect on your strengths and interests. If you’re a strong communicator, consider tutoring or coaching. If you’re tech-savvy, e-commerce or social media management might be a good fit.
  3. Income Goals: Determine how much income you hope to generate from your side hustle. Some side hustles offer quick cash, while others may require more time to build but offer higher long-term potential.
  4. Flexibility: Choose a side hustle that fits your lifestyle. If you need flexibility, look for opportunities that allow you to set your own hours or work from home.
  5. Passion: Ideally, your side hustle should align with your passions. When you enjoy what you’re doing, it won’t feel like work, and you’re more likely to stick with it and succeed.

Conclusion

As we move further into 2024, the opportunities for earning extra income through side hustles are more abundant than ever. Whether you’re looking to build a full-fledged business or simply want to supplement your current income, there’s a side hustle out there that can help you achieve your financial goals. From freelance writing to Airbnb hosting, the options are diverse, and the potential for success is within reach.

Choosing the right side hustle involves considering your time, skills, and passions, but with the right approach, you can turn any of these opportunities into a profitable venture. So why wait? Start exploring these side hustles today and take control of your financial future in 2024.

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading

WORDPRESS

What is PHP? A Thorough Explanation for Absolute Beginners – WordPress.com News

Published

on

By

What is PHP? A Thorough Explanation for Absolute Beginners – WordPress.com News

If you find yourself diving deeper into the topic of WordPress, content management systems, and websites, a term you will quickly stumble upon is “PHP.” You will likely hear how crucial PHP is for the Internet and that it is what’s powering WordPress websites.

However, what exactly is PHP, and why is it so important?

The short answer is that it’s a general-purpose, server-side scripting language. That said, unless you are already knowledgeable in programming and web development, that probably doesn’t make things much clearer. 

In order to help you better understand this topic, we’ll cover PHP in detail below. You’ll learn what PHP is, why it matters, and how it relates to WordPress and pretty much everything you do online. We promise you’ll be surprised to hear how much you likely rely on PHP every day.

  1. What is PHP? History, features, and benefits
    1. PHP features
    2. Benefits of PHP
  2. How PHP works: Creating dynamic web content
  3. PHP and WordPress: The CMS’ heart and soul
    1. Powering themes and plugins
    2. Without PHP, there would be no WordPress
  4. PHP in everyday life: You rely on it more often than you think
    1. Other abilities of PHP
  5. What is PHP? It is the web’s backbone

What is PHP? History, features, and benefits

The original developer of PHP was a Danish-Canadian programmer named Rasmus Lerdorf. He first created the language in the mid 1990s to build tools for his own website; that’s why PHP originally stood for “Personal Home Page.” Today, it stands for the recursive acronym “Hypertext Preprocessor” and development and support has been taken over by the PHP Group.

PHP features

PHP has some notable features, many of which are applicable to the way WordPress works:

Open Source: The first thing that is important to note is that, like WordPress, PHP is open source. That means it does not belong to any one business entity. It also means that it’s free to download and use for any purpose.

Also like WordPress, PHP is maintained by a number of volunteers around the world. The next major release, 8.4, will be available November 21, 2024.

Finally, both WordPress and PHP are community-funded––while WordPress has the WordPress Foundation, The PHP Foundation’s mission is to “ensure the long-term prosperity of the PHP language.” Automattic is a proud Platinum Sponsor of The PHP Foundation.

Server Side: PHP is a server-side language, which means it executes on the server and not in the user’s browser.

For example, PHP’s most frequent application is for creating HTML documents for websites. Even though there are PHP files on the server, the browser does not receive the PHP code; instead, it receives the finished HTML documents for display. This is different from client-side languages like JavaScript where the processing happens directly in the user’s browser after downloading the JavaScript files.

To make things clearer, server-side languages are a bit like going to a restaurant. You send an order to the kitchen, they prepare the meal, and it arrives at your table ready to eat. Client-side languages, on the other hand, are like meal-delivery services. While they provide you with all the necessary ingredients, you still have to put them together in your own kitchen.

General Purpose: PHP is also a general-purpose programming language. You can use it for command-line scripting, creating desktop applications, and more. However, its primary application is in web development. 

Ubiquitous: According to W3Techs, the language is present on 75.7% of all websites. That includes some famous ones, as you will see below.

In addition, it forms the backbone of many content management systems like DrupalJoomla!, and—the most popular of them all—WordPress.

PHP is one of the biggest open source success stories, as much of the modern Internet depends on it to work.

Benefits of PHP

You might be asking yourself why the usage of PHP is so widespread. There are many good reasons for that, but here are just a few:

  • Beginner-Friendly: PHP is relatively easy for beginners to learn due to its intuitive syntax. There are also plenty of tools and frameworks available to make coding easier.
  • Wide Community: The language has a vast and active community of developers worldwide. This means there are loads of online resources, forums, and other places where users can seek help and find ready-made solutions to common problems.
  • Cross-Platform Compatibility: PHP is compatible with popular operating systems, including Windows, MacOS, Linux, and Unix. It also works on various web servers such as Apache, NGINX, and Microsoft IIS.
  • Database Connectivity: In addition, it works with a number of different database formats, such as MySQL, MongoDB, PostgreSQL, SQLite, Oracle, and more. PHP can execute SQL queries, retrieve, update and delete data, and handle database connections and transactions.
  • Cost-Effective: As we have already learned, the programming language is free to use, distribute, and modify. That eliminates the need for expensive licensing fees and reduces development costs, making it an economical choice for web development projects.
  • Scalability: PHP is capable of handling high traffic loads and can easily scale. You can use it together with caching techniques and other optimization strategies to enhance performance. Plus, it’s generally faster than some other programming languages, such as Python.

How PHP works: Creating dynamic web content

One of the main reasons why PHP is so popular for web development is that it seamlessly integrates with various technologies and services commonly used in this area. Examples include HTTP, POP3, IMAP, and more. 

One of its main advantages is that it is highly compatible with HTML, the main language used to create and display websites. In fact, it’s possible to use PHP code in HTML files and vice versa.

Above you can see how both languages appear in the same file. The PHP markup is delineated by opening and closing brackets ( and ?>) so that the server knows where it ends and begins. However, the PHP code itself is inside an HTML  element. The _e function is a WordPress function used for localization, which allows for easy translations across the WordPress software.

The main benefit of this is that using PHP allows web developers to display dynamic content in otherwise static web pages. For example, PHP is able to pull content directly from databases, making it great for templating. You can create a fixed layout for all web pages but then display different content depending on the page a user is on.

the templates page on a WordPress site showing All Templates

This is vastly different from pure HTML, where the content needs to be hard-coded in the page file in order for the browser to show it. PHP, on the other hand, can add it on the fly as needed. That’s one of the main benefits of this programming language—the ability to dynamically combine and display content from different sources and of different kinds according to what the user requests.

PHP and WordPress: The CMS’ heart and soul

As a WordPress user, PHP is especially important. The programming language forms the basis of much of what WordPress can do. It’s what allows you to create, edit, and delete pages, posts, media, and other content. That’s why you see that a lot of files that end in .php when you look in the directory of any WordPress installation.

A screenshot of the PHP patterns files for a WordPress website in VS Code

It’s also why, when installing WordPress on a server, the system requirements insist that PHP be present. In recent years JavaScript has been playing a bigger and bigger role in the WordPress ecosystem, mainly because of the adoption of the Gutenberg editor. That said, PHP is still the main workhorse in the background.

Powering themes and plugins

What are some of WordPress’ main tasks powered by PHP? Before the advent of block themes, WordPress themes were all written mostly in PHP, especially page template files. In fact, if you look at the template hierarchy, you can see that WordPress has PHP files for pretty much all pages and theme components.

a visualization of the WordPress template hierarchy
Image from WordPress.org

Why? So we have the ability to create a single layout for one type of content and then dynamically display what’s saved in the database for a particular piece of content.

That way, if you have 300 pages of the same kind on your site, you don’t need a file for each as you would on a pure HTML website. Instead, you just need one single page template file; PHP can then populate each individual page with its specific content.

PHP also makes it easy to compartmentalize different parts of your theme. For example, it’s very common to not have the markup for a footer in each file. Instead you can create a separate footer.php file and call it into your templates where needed. That way, if you want to modify the footer layout, you only have to make changes in a singular place—the footer.php file.

A highlighted footer template on the Pages template on WordPress with a mint green background

The same is true for plugins, aka collections of PHP files that contain the necessary markup for adding extra functionality to your WordPress site. When you activate a plugin, it gets added to the rest of your website code and can provide the functionality you are looking for.

Without PHP, there would be no WordPress

All of the above is only made possible by the flexibility that PHP offers. Besides the benefits we have discussed before, this is the main reason why WordPress relies on PHP to the extent that it does; PHP offers a ton of flexible functionality specifically for web development. PHP’s capabilities in content management, working with databases, and its modularity all make it a perfect candidate for powering the most popular website builder there is.

This also means that if you know PHP, it opens up a lot more possibilities to modify your WordPress website. You can write custom plugins, make changes to (non-block) themes and page templates, introduce functionality to functions.php, and so much more. So, if you want to improve your WordPress skill set, learning PHP is not a bad place to start.

PHP in everyday life: You rely on it more often than you think

Besides WordPress, you might actually be unaware how much of your general everyday online interactions are enabled by PHP. There are a number of very well-known websites that use PHP to run and many common processes that the programming language performs online:

  • Facebook: The largest social network in existence was initially built using PHP. While they have moved away from the programming language over time, it still plays a significant role in their infrastructure.
  • Wikipedia: The world’s biggest online encyclopedia also relies heavily on PHP for its back end operations, content management, and user interactions.
  • Tumblr: This microblogging and social networking platform employs PHP to power its vast network of user-generated content and social interactions. We’re actually in the process of migrating Tumblr’s backend to run on WordPress; if you’re interested in being a part of this exciting project, leave your information here.
  • Slack: This widely-used team collaboration and communication platform utilizes PHP for its back-end operations, real-time messaging, and API integrations.

And this is just the tip of the iceberg. There are countless other examples of well-known web staples that exist in part because of PHP.

Other abilities of PHP

Up until this point, we’ve mostly talked about PHP in the context of creating and outputting HTML markup; however, the programming language is involved in a lot more that you probably take advantage of on a daily basis:

  • Form Processing: PHP can process and validate data submitted by users via forms. It’s also capable of performing actions such as storing data in a database, sending email notifications, or generating dynamic responses based on user input. Plus, it comes with encryption to keep the submitted data safe.
  • User Authentication: It can also handle user authentication by verifying login credentials. PHP allows you to implement user registration and login/logout functionality, and it can control access to different areas of your website or application. For example: user roles.
  • Session Management: PHP can also manage user sessions, store session data, and track user activity. Among other things, this allows you to save user preferences. PHP can also set cookies and receive cookie data.
  • File Manipulation: The programming language provides a wide range of functions for file manipulation, such as reading and writing files, uploading files from forms, creating directories, and modifying file permissions. This comes in handy for managing files on the server through other applications (like WordPress).
  • Email Handling: PHP comes with functions to send emails from a server. This allows you to build features like contact forms, email notifications, and automated email responses.
  • Third-Party Communication: With PHP you can interact with external APIs and web services. It makes it possible to integrate with other applications, retrieve data from remote servers, and perform actions like posting to social media platforms.

What is PHP? It is the web’s backbone

If you’re an everyday WordPress user or non-developer, you probably don’t spend a lot of time thinking about how much of your online experience is possible thanks to the humble PHP. However, the more you dive into this topic, the more you’ll realize how much you rely on it.

Who knew an open source solution was at the heart of what makes the World Wide Web tick? From the largest content management system in the world to well-known web entities, so much of what we take for granted exists because of it.

There are good reasons why it’s so widespread; from its powerful capabilities over its wide support system to ongoing development and support, there is a lot that speaks for PHP as the go-to solution for web projects.

Since it’s also beginner friendly, learning some PHP skills is definitely a good place to start if you want to dive deeper into the technical aspects of WordPress and web development.


Join 112.7M other subscribers

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading

WORDPRESS

Ian Stewart to Lead WordPress.com – WordPress.com News

Published

on

By

Ian Stewart to Lead WordPress.com – WordPress.com News

Ian Stewart will lead customer experience at WordPress.com, utilizing his 14 years of experience on the WordPress.com team and a passion for themes.

We are pleased to announce that Ian Stewart (blog, LinkedInGitHub, X) has been chosen to lead end-to-end customer experience for WordPress.com as its Artistic Director and product lead.

In a nod to LVMH’s organizational structure, Ian will lead in the style of a maison head, ensuring that every part of WordPress.com remains the best managed WordPress experience available. He has been a part of the WordPress.com team for over 14 years, and we’re excited to see what changes he will implement on WordPress.com in this new role.

“I got involved with WordPress after growing tired of using Blogger for my personal blog,” Ian says. “This quickly led to the demise of my regular blogging habits as I spent most of my time messing around with my theme…My fooling around with WordPress themes quickly became a delightful obsession as I tried to publicly figure out what I thought about them.”

We’re grateful for your obsession with WordPress, Ian, and we certainly know the feeling.

Please join us in welcoming Ian in his new role.


Join 109.5M other subscribers

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading

Trending