How to Properly Disable Google AMP in WordPress

Do you want to disable Google AMP in WordPress? Many bloggers and websites who jumped on the Google AMP bandwagon are now disabling it for different reasons. The challenge is that disabling Google AMP is not as simple as one would hope for. In this article, we will show you how to properly disable Google AMP in WordPress.

How to Properly Disable Google AMP

Why and Who Should Disable Google AMP in WordPress

Accelerated Mobile Pages or AMP is an open source initiative with aim to make the web faster for mobile users and improve user experience.

It does so by serving pages with bare minimal HTML and JavaScript. This allows the content to be hosted on Google AMP Cache. Google can then serve this cached version to users instantly when they click on your link in the search results.

AMP pages appearing in Google search results

We shared our concerns and issues raised by other bloggers regarding AMP in our guide on how to set up Google AMP in WordPress.

Since then many website owners, influential bloggers, and online publications have stopped using AMP. Many of them shared the reasons behind their decision.

For example, Alex Kras wrote in great length about why he decided to disable AMP on his website.

He also shared what happened one month after he disabled Google AMP.

Traffic rate appears to stay roughly the same and all metrics appear to improve. To be fair, I did publish four new articles since I disabled AMP, so my numbers could have had a nice bump from the new content.

Here are some of the concerns shared by many influencers, bloggers, and developers.

Drastic Drop in Conversion Rates

AMP uses a restrictive set of HTML/JS. Site owners cannot do much about encouraging users to subscribe, fill out contact forms, or buy stuff.

Lower Pageviews by Mobile Users

AMP does not show your website’s navigation menus, sidebars, or other content discovery features. This causes significant drop in pageviews by mobile users.

In fact some user experience experts suggest that the close button on top actually encourages users to return back to Google search after reading your article instead of browsing your website.

Close button in AMP viewer on Android

Lower User Engagement

Many websites thrive on user interactions, like click to tweet widgets, user ratings, comments, and so on. Google AMP makes it quite difficult for website owners to keep users engaged and interact with their content.

Should You Disable Google AMP?

The answer to this question actually depends on your website. If mobile users make the majority of your audience, then you may still want to use AMP.

On the other hand, if you have tried Google AMP, and it has negatively affected your conversion rates, then you should probably disable Google AMP on your website.

Contrary to popular belief, Google does not penalize websites for not using AMP. You can still improve your website’s speed and performance on mobile to compete for mobile search audience.

Step 1. Disabling Google AMP in WordPress

There are a couple of WordPress plugins that allow you to add AMP support to your website. The basic settings remain the same regardless of what plugin you are using.

First thing you need to do is to deactivate the AMP plugin. Simply visit the plugins page and click on the deactivate link below AMP plugin.

Deactivate AMP

Deactivating the plugin will disable the AMP support on your website.

Step 2. Setting up Redirects

Disabling the AMP plugin will remove the AMP version of your articles from the website, but that alone is not enough specially if you have AMP turned on for more than a week.

There is a very good chance that Google already have those pages cached in their index, and it will keep showing those pages in search results.

To fix this problem, you need to redirect users coming to AMP pages to the regular non-AMP pages.

We will show you two different methods to set up redirects for Google AMP. You can choose the one that’s most convenient for you.

Method 1: Using a Redirect Plugin

First you will need to install and activate the Redirection plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, go to Tools » Redirection page to set up redirects.

AMP Redirect

First, add the following code in the source URL field:


In the target URL field, you need to add your website’s URL in the following format:$1

Don’t forget to replace with your own domain name.

Now check the Regex checkbox and select Redirections under the Group drop down menu.

Finally click on the ‘Add Redirect’ button to save your changes.

You can now visit an AMP page on your website to see if the redirect is working properly.

Method 2: Manually Set Redirects in .htaccess

If you don’t want to use a plugin to setup redirects, then you can setup redirects using the .htaccess file on your WordPress hosting account.

First you will need to connect to your website using a FTP client or File Manager in cPanel. Once connected, you need to locate the .htaccess file in your website’s root folder and edit it.

Simply add the following code at the bottom of your .htaccess file:

// Redirect AMP to non-AMP 
RewriteEngine On
RewriteCond %{REQUEST_URI} (.+)/amp(.*)$
RewriteRule ^ %1/ [R=301,L]

Don’t forget to save your changes and upload the file back to your server.

You can now visit the AMP version of any post on your website to make sure that redirect is working as intended.

We hope this article helped you properly disable Google AMP in WordPress. You may also want to see our step by step ultimate WordPress SEO guide for beginners.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Properly Disable Google AMP in WordPress appeared first on WPBeginner.

Ultimate Guide to Creating a WordPress Membership Site

Do you want to create a WordPress membership site? Due to its flexibility and ease of use, WordPress has become the top choice for building a membership website. In this step by step guide, we will show you how to create a WordPress membership site like a pro (without the coding knowledge).

Creating a WordPress membership website

What Do You Need to Start a WordPress Membership Website?

Unlike 10 years ago, it’s quite easy to make a website these days. Out of all the platforms and website builders, WordPress makes it the easiest for anyone to build their own membership website and start selling with little to no technical skills.

You’ll need the following three things to start:

  1. A domain name. This will be your website’s address (Example,
  2. A web hosting account. This is where your website files are stored.
  3. A membership addon (It will convert your regular website into a membership platform).

You can setup a fully functional membership website with WordPress in less than 30 minutes, and we’ll walk you through every step of the process.

In this tutorial you will learn:

  • How to get a domain name for free
  • How to choose the best web hosting
  • How to get a free SSL certificate (required to accept payments)
  • How to Install WordPress
  • How to choose a WordPress membership plugin
  • Setting up your your membership website
  • Adding payment methods
  • Adding membership levels
  • Creating members only content
  • Creating pricing and sign up pages
  • Extending your membership website

Ready? Let’s get started.

Step 1. Starting Your WordPress Membership Site

First, you need to make sure that you are using the right WordPress platform. Yes there are two types of WordPress. We recommend using the self-hosted version because it gives you unrestricted access to all features and tools that you need (see the full comparison of vs

For a self hosted WordPress site, you’ll need a WordPress hosting account, domain name, and a SSL certificate.

Typically, a domain name costs around $14.99 / year, web hosting around $7.99 / month, and SSL certificate costs around $69.99 / year.

If you are just starting out, then these startup costs can add up quickly.

Thankfully, we have a way to fix that.

Bluehost, an official WordPress recommended hosting provider, has agreed to offer our users a free domain name, free SSL certificate, and a discount on web hosting.

Basically, you can get all of the above for $2.75 per month.

→ Click here to Claim this Exclusive Bluehost offer ←

Note: At WPBeginner we believe in full transparency. If you sign up with Bluehost using our referral link, then we will earn a small commission at no extra cost to you (in fact, you will save money and get a free domain + SSL certificate). We would get this commission for recommending just about any WordPress hosting service, but we only recommend products that we use personally and believe will add value to our readers.

Once you have signed up for hosting, the next step is to install WordPress. Follow the instructions in our step by step guide on how to start a WordPress blog, and you’ll be up and running in no time.

Now that you have installed WordPress, you can move on to setting up your WordPress membership site.

Step 2. Choosing a WordPress Membership Plugin

The best part about WordPress is that there are plenty of good plugins available that you can use to build your WordPress membership website. However, each one of them has its own pros and cons. We have a full comparison of the best WordPress membership plugins.

To choose the right WordPress membership plugin, first you need to decide what kind of membership website do you want to build and what features will it need?

If you just want to allow user registration on your WordPress site, then you can use WPForms. It is a WordPress form builder plugin that allows you to easily create user login and registration forms. You can even allow users to submit articles without accessing the WordPress admin area.

On the other hand, if you want to sell subscriptions, paid content, or digital downloads, then you’ll need a more robust WordPress membership plugin, like MemberPress.

MemberPress comes with advanced membership features that allow you to accept payments, create membership levels, restrict access based on levels, and more.

Selling online courses can be another possible scenario. In this case, you’ll need LearnDash, a complete WordPress LMS plugin with all the learning management features.

You can also integrate LearnDash into MemberPress to create a powerful website with online courses as well as membership subscriptions.

That being said, let’s start setting up your WordPress membership website.

Step 3. Setting up Your WordPress Membership Website

We are choosing MemberPress as our go-to plugin because it has all the features we mentioned above, and it works perfectly with third-party plugins necessary for the growth of your business.

First thing you need to do is install and activate the MemberPress plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, you need to visit the MemberPress » Options page to configure the plugin settings.

MemberPress options page

Step 3. Add a Payment Method

The options page is divided into different tabs. The first thing you need to setup is a payment gateway because it allows you to accept payments on your membership site.

You can do this by switching to the ‘Payments’ tab and then selecting your payment gateway.

MemberPress payments

MemberPress supports PayPal (Standard, Express, and Pro), Stripe, and out of the box. You need to select the payment method you want to set up and provide the required credentials.

You can also add multiple payment methods by clicking on the add button to add another payment method. We typically use two options: Stripe for credit cards and PayPal as a secondary option because some users prefer PayPal over giving out credit card details.

Don’t forget to click on the ‘Update Options’ button at the bottom of the page to save your settings.

Step 4. Creating Membership Levels

The next step is to create membership levels that your users can purchase. Each membership level can have different pricing plans, perks, and access. You can even have a free membership plan.

To create a membership level, you need to go to MemberPress » Memberships page and click on the ‘Add New’ button at the top.

Add membership level

On the next page, enter a title for this particular membership plan and then provide the plan details in the post editor.

You will need to set the pricing and expiration for this plan under the membership terms section.

Membership plan

In the example above, we have created a yearly membership plan.

After that, you need to scroll down to the membership options meta box below the post editor. This is where you can customize permissions and membership options for this particular plan.

Membership options

Once you are satisfied with the membership plan, you can click on the publish button to make it available.

Go ahead and repeat this process to create as many membership plans that you need.

Step 5. Restrict Access for Membership Plans

The next step is to select which content would be available to different membership plans on your website. MemberPress makes it very easy to control access using ‘Rules’.

You can setup rules by visiting the MemberPress » Rules page and clicking on the Add New button at the top.

Add new rules

The rule edit page allows you to select different conditions and associate them to a membership plan.

For example, you can select all content that matches a particular tag or category to be available only to members with the silver subscription plan.

Add a rules set to MemberPress

You can also create more specific rules. For example, a single post or page, child pages, or a specific URL.

Below the rules editor, you’ll see the content drip and expiration options.

Drip content allows you to gradually release content to users instead of giving it all away at once. The expiration option makes the content unavailable after a defined period of time.

If you are not sure, then you should leave them unchecked.

Once you are satisfied, go ahead and click on the ‘Save Rule’ button to save your rule settings.

Repeat the process to create more rules as needed for your membership site.

Step 6. Adding Members Only Content

MemberPress makes it super easy to create members only content using Rules.

In the above example, we created a rule that restricted all content tagged as paid to be restricted. Now all we need to do is to create our paid content and add the paid tag to it.

Adding members only content

MemberPress also adds ‘MemberPress Unauthorized Access’ metabox below the post editor. This allows you to select what logged out users (non-members) will see when they reach this content.

Restricted content options

You can use the global default settings, or you can show excerpts, login form, or a custom message.

Once you have added members-only content, you can go ahead and publish it. As the page reloads, you will see a success message that this content is protected.

Protected content

Step 7. Create a Pricing Page

This is the page your users will see when they want to sign up for a membership plan. On this page, users will be able to select a membership plan and then move to the payment page.

Users who try to access the restricted or paid areas of your website will also be redirected to this page.

You can configure this by going to MemberPress » Groups page and clicking on the Add New button at the top.

Creating a group

First, enter a title for the group plan page. This will also be the title for the plans page that users will see.

Next, go down to ‘Group options’ metabox and add memberships that you want to display on the page.

Pricing group options

You can also select a theme for the pricing table. MemberPress comes with few ready-made templates for that.

Once satisfied, click on the ‘Publish’ button to make your plan publicly visible.

To preview your pricing page, click on the ‘View Group’ link after publishing it.

Pricing page

Step 8. Redirect Users to Pricing Page

Now that we have the pricing page ready, the next step is to redirect unauthorized users to the pricing page.

To do that, first you need to visit MemberPress » Groups page and copy the URL next to the group you created in the previous step.

Pricing page URL

After that, go to MemberPress » Options page and scroll down to the ‘Unauthorized Access’ section.

You need to check the box next to ‘Redirect unauthorized visitors to a specific URL’ option and then paste the group URL you copied earlier.

Redirect unauthorized users to pricing page

Click on the ‘Update Options’ button to save your settings.

Now unauthorized users will be redirected to the pricing plans page when they try to access a members only area.

Step 9. Add Sign up and User Login Forms

Now that you have everything setup, it is time to allow your users to easily find their way around your website.

First, you need to add a user login form so that members can sign in to their accounts.

Go to Appearance » Widgets and add ‘MemberPress login’ widget to a sidebar.

MemberPress login widget

Next, we will be adding the pricing page link to the navigation menu, so that new users can select a plan and register.

You can do this by visiting the Appearance » Menus page in your WordPress admin. From the left column, you need to click on the Groups tab to expand it. It will show the pricing plan group you created earlier.

Add pricing plans to the menu

Check the box next to your pricing page and then click on the ‘Add to menu’ button.

The pricing plan page will now appear in the right column. You can drag and drop to rearrange its position in the menu. You can also edit it and change the link text.

Edit menu item

Don’t forget to click on the save menu button to store your changes.

You can now logout of the WordPress admin area and visit your website to see everything in action.

Membership website preview

Taking Your Membership Website to The Next Level

MemberPress is a powerful WordPress membership plugin. It allows you to easily grow your membership website.

It works beautifully with LearnDash, which allows you to easily create courses and leave the selling part to MemberPress. You can also use it alongside BuddyPress and bbPress.

Here are some other useful resources to help you grow your WordPress membership site.

That’s all, we hope this article helped you setup your WordPress membership website. You may also want to see our step by step WordPress SEO guide for beginners.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post Ultimate Guide to Creating a WordPress Membership Site appeared first on WPBeginner.

WordPress 4.9 Protects Users From Fatal Errors Created in the Theme and Plugin Editors

Over the years, there have been many discussions and debates on whether or not WordPress should have a built-in file editor for themes and plugins. The file editors, while convenient, allow users to easily trigger fatal errors that can be difficult to fix, especially if they don’t have FTP access.

Instead of removing the editors from core, the WordPress development team has enhanced them by adding fatal error protection in WordPress 4.9. When a user accesses the theme or plugin editor for the first time, they’re presented with the following warnings. The warnings are a result of a three-year-old trac ticket.

Plugin Editor Warning
Plugin Editor Warning
Theme Editor Warning
Theme Editor Warning

If you try to save changes to a file and WordPress detects a fatal error, the change is not saved and a warning message is displayed that explains where the error occurred. Although the changes are rolled back, the code in the editor is not replaced with the original. To replace the code, simply refresh the browser tab.

Fatal Error Detected
Fatal Error Detected

In addition to safety features, the code editors are powered by CodeMirror, an open-source, JavaScript powered text editor that adds features such as line numbers. The plugin editor includes the ability to look up documentation for filters, hooks, and actions with many of the links pointing to the new WordPress Developers Resource site.

Even with the addition of CodeMirror in core, the file editors in WordPress are not a replacement for an integrated development environment. However, the warnings and fatal error protection are huge improvements that will prevent many users from creating a White Screen of Death situation on their sites.

Atom Autocomplete for WordPress Coding Standard (WPCS) Whitelist Flags

Atom Autocomplete for WPCS Whitelist Flags

This morning I created an Atom package for the WordPress Coding Standard (WPCS) whitelist flag autocomplete. I used this blog post by Will Boyd along with the autocomplete boilerplate repository as a starting point.

Never lose a single business lead or enquiry again! Get my latest plugin Storage for Contact Form 7 now!

Buy now for only $19 →

WordPress Replaces Browserify with Webpack for Build Process

webpack logo

During a core JavaScript chat held in May, WordPress contributors agreed on using Webpack (and ES6 imports) instead of Browserify for JavaScript bundling in the build process.

“Since we split the media files in #28510, the core build process has used Browserify to combine the media files,” Adam Silverstein said in the ticket proposing the replacement. “While browserify has served us well, Webpack is probably a better long term choice for the project, especially with the introduction of a new JavaScript framework that may require a build.”

Over the past four months contributors on the ticket have worked on making sure the Webpack setup is working well to build the files. WordPress core committer K. Adam White also reached out to some Webpack contributors for an additional review during the process before replacing Browserify as the JavaScript bundler.

Webpack has rapidly gained popularity among the many utilities for bundling JavaScript files and is one of the most prominent examples of a project that has successfully found a sustainable source of funding through its account on Open Collective. The project funded its first full-time developer through the platform and has an estimated annual budget of $241,650, based on current donations.

The Yoast SEO Configuration Wizard

Have you ever done a fresh Yoast SEO for WordPress install on your WordPress website? Have you ever found yourself wondering what’s hidden in the general SEO section of Yoast SEO? In the SEO section, in the bottom half of the WordPress menu on the left of the page? Perhaps the better question would be: have you ever tried our Yoast SEO configuration wizard? Our wizard takes care of all the little things that you should configure. Things that you might forget in your eagerness to get started with your newly set up website.

Optimize your site for search & social media and keep it optimized with Yoast SEO Premium »

Yoast SEO: the #1 WordPress SEO plugin Info

Where can I find the Yoast SEO configuration wizard?

Of course, you want to jump right in and configure our plugin, using that Yoast SEO configuration wizard. Once you have installed our plugin, you’ll see a notification on your Yoast SEO dashboard:

The configuration wizard helps you to easily configure your site to have the optimal SEO settings.
We have detected that you have not finished this wizard yet, so we recommend you to start the configuration wizard to configure Yoast SEO.

There is a link in this message, leading you to a tab that’s located next to your SEO dashboard: “General”. You can set a number of things here, but you’ll also find a button that takes you to the Yoast SEO configuration wizard:

Where to find the Yoast SEO configuration wizard

The wizard

Once you’ve opened the wizard, we’ll guide you through the steps via a few questions. If you answer these, we’ll implement the right settings for your website, based specifically on your answers.

Step 1: Welcome to the Yoast SEO configuration Wizard

Let’s look at the first screen of the configuration wizard:
Yoast SEO configuration wizard: Welcome

You have two options here. You can start the wizard by clicking the purple button in the left box. This will continue the process as described below in this article.

The other option, on the right, will take you to our shop. Because we can do the configuration process for you, if you feel that there’s more to configure, and want to be sure it is done right for your particular site. We’ll check all the things in the wizard, but first, we will have a quick look at your website to see how you implemented things. And how we can optimize these settings for your specific business. Especially the technical side of things may feel challenging for the average site owner. This is where the configuration service is of great help. For the best result, you can also purchase our configuration package, which also includes our Yoast SEO Premium plugin, and the installation of that plugin.

For this post, let’s assume you want to use the Yoast SEO configuration wizard first.

Step 2: Is your site ready to be indexed?

The first question determines whether you want your site to be indexed or not. Perhaps you are working on a development site, on a staging server or just don’t want the public to see your site yet:
Yoast SEO configuration wizard

The reason we ask, is that one of the most important checks in our plugin determines whether Google can index your site or not. Google needs to be able to reach your website and index it unless you don’t want that. If you don’t want that, we merely need to know. You can set your preference for this in the second step of our wizard.

Step 3: What kind of site do you have?

In the next step, we will ask you about the type of site you have. It could be a blog or an online shop, but might as well be a news site or a portfolio.
Yoast SEO configuration wizard

One of the reasons we ask this question is because it’s essential you take a moment and think about this. What is your site about? Let’s take, for example. We have two different sections on our website

  • Our blogs: an SEO blog and a dev blog. In these blogs, we share knowledge about both SEO and software development in all its facets.
  • Our online shop. We run an online shop and you’ll find our premium plugins and online courses in there.

What makes this question hard for ourselves, is the fact that following our mission “SEO for everyone”, both are equally important. Sharing knowledge is our main goal. Making sure all companies large and small and all individuals rich and poor, wherever on this planet, can optimize their websites and have an equal chance to rank in the search result pages. We use our products to provide even more insights or to deliver our knowledge to you in a structured package. That is also the reason we charge prices for our software that fit well into the offers of most online agencies. Charging $5,000 for a website, and including a mere $89 for our Yoast SEO Premium plugin seems like a no-brainer. Especially since it just makes your work / the work of your client so much easier. But enough with the promotional talk.

Think for yourself what your answer to this question should be. That’ll make it easier to configure several features of our plugin and, in fact, of your website later on.

For us, as plugin developers, the information we get from this question is also useful for future improvements. For instance, it can help us to prioritize future additions to our plugin for specific types of sites.

Step 4: Is it you or your company?

For the right metadata, we ask you to choose between company and person here. Is your website about you, or the company you represent? If you are a person, we would like to include your name. If you are a company, please add the name and logo.
Yoast SEO configuration wizard

This information will be included in the metadata of your website, with the goal to provide Google with the right information for their Knowledge Graph. The Knowledge Graph is the block of information you see on the right-hand side of the search results, for instance when you do a company search for Sony or Apple. My search for “Apple” actually returned details for our local Apple premium reseller, with a sort of ‘footer’ about the global Apple company details.

To make sure you give Google proper suggestions for that Knowledge Graph, we have added this question.

Step 5: Tell us your social profiles

In addition to your name or company name, we also ask you to let us know which social profiles you have. Again, so we can provide Google with the right information for their Knowledge Graph. Google seems keen on delivering answers to their visitors right away, so you’d better make sure your information is on Google.
Yoast SEO configuration wizard

With social being a part of the Knowledge Graph, and your website being linked on all your social profile pages, be sure to fill this out as completely as possible.

Step 6: To show or not show certain post types

The description in the image below is pretty clear: this is where you can set posts and pages to hidden or visible. Besides that, you can also choose to hide the Media post type.
Yoast SEO configuration wizard

If you set your Media post type to ‘visible’, WordPress will generate separate pages for your images, and we will generate an XML sitemap for your images as well. Now, unless you have a very specific reason to generate these pages, we recommend setting this to ‘hidden’ instead. That way, most websites prevent the generation of a ton of pages that just contain an image and no further content. Google will spend time indexing all these pages, but they add little value to your content. Keep in mind that when an image is on your page, post, or a specific gallery, Google will find it anyway.

Step 7: How many people are publishing content on your site?

We absolutely want to know if your website has multiple authors. There’s a reason for that: when your site only has one author, WordPress will still generate author pages. But if you write all the content on your blog yourself, your blog page will show the exact same collection of posts as your author page. And that, indeed, is duplicate content.
Yoast SEO configuration wizard

We call something duplicate content when the majority of a page is the same as the content on another page. Google will notice this, get confused, won’t know what page to rank first, and might decide to rank both a bit less. You obviously want to prevent that from happening. As we can guide you in this case, we added this check to our Yoast SEO configuration wizard.

Step 8: Google Search Console integration

There is a ton of information about your website in Google Search Console. We have written many posts about webmaster tools like Google Search Console, but did you know we also have an integration for it in our plugin? It connects your website to Google Search Console and allows you to keep a keen eye on your 404 Not Found errors. In our Yoast SEO Premium plugin, we’ll even guide you in preventing these 404 errors by helping you change them to for instance a 301 (so redirect the page to another page), or a 410 status code (which tells Google the page is gone forever).
Yoast SEO configuration wizard

In this step of the Yoast SEO configuration wizard, we guide you in connecting Google Search Console to our plugin. After that, we’ll start showing you your 404s so you can monitor and fix them!

Step 9: Optimizing your page title

At the title settings step in the wizard, we ask you to think about your branding. The website name you enter here is the name that our default page title template will use to put at the end of each page title. The default page title template looks like this:
%%title%% %%page%% %%sep%% %%sitename%%

The last part of that template is %%sitename%% and that’s what you fill out here. Be sure to add it, but keep it short, so the focus will be on the page or post title. It’s nice to have some of your branding in here so people will recognize your pages in the search result pages. If they already know you and your site, they’re more likely to click on one of your links.
Yoast SEO configuration wizard

The third part of the page template is %%sep%%, which stands for separator. A page title that follows our template can be “Some title of a post – Yoast”. The hyphen in there is the separator you can set at this step in the Yoast SEO configuration wizard. Using another separator than the average person might make you stand out from your competitors in the search result pages. But beside that, you can also pick the smallest separator, which could mean you can squeeze in another character or two.

Read more: ‘Titles and meta variables in Yoast SEO’ »

Step 10: Awesome tips and new products in your inbox

As SEO is an ongoing process, our goal is to keep you up-to-date on any changes in Google’s search result pages or Google’s algorithm. We do that by posting on our SEO blog, but also with our newsletter. In the newsletter, we highlight new developments in search, in WordPress and in our company – if relevant.
Yoast SEO configuration wizard

Simply insert your email address, and we’ll keep you in the loop on all things SEO!

Step 11: Upsell: buy our Premium plugin

Call it whatever you want (upsell, spam, useful information), but we have to tell you about our premium plugin in our configuration. Because we deliver incredibly useful SEO extras with that premium plugin, for a reasonable price. To name but a few:

  • What about a redirect manager? We’ll not only show you your 404s, but will also make it very easy to redirect, and thereby fix ’em.
  • An internal linking tool that will help you optimize your site structure to the max. Link suggestions and an easy way to copy these into your text. Optimize your cornerstone content even further.
  • Social previews, so you’ll know exactly what your website will show on Facebook and Twitter, and the option to tweak that.
  • A year of updates for all premium features, so your entire plugin will always be 100% up-to-date.
  • Email support for as long as you have Premium. This means you can email our 24/7 support team with any questions you have about the plugin.

Yoast SEO configuration wizard

Next to that, we offer some hands-on online courses to improve your SEO game even more. Be sure to check them out; you can always decide later if they add value for you, right? We think they do :)

Step 12: Even more free information about the plugin: then you’re ready to get started!

All the steps above have one goal: prepare you and your website for SEO. These steps are focused on the general settings of our plugin.

If you have used our plugin before, you’ll know it also provides a thorough SEO analysis in real time, while you write your posts or pages. On the page/post edit screen, where you write your content, you’ll find a so-called meta box with our SEO and readability analysis. For more insights on both, we finish our Yoast SEO configuration wizard with a helpful video, which tells you more about that specific part of the plugin. Be sure to watch that video!
Yoast SEO configuration wizard: finished

The configuration wizard makes things easier for all of us

All in all, I trust this article gives you a pretty good insight in why you should give our Yoast SEO configuration wizard a spin. And why we ask what we ask in there!

And again, if you want us to configure the plugin for you, feel free to use our Yoast SEO configuration service instead!

The post The Yoast SEO Configuration Wizard appeared first on Yoast.

Gutenberg 1.4 Adds HTML Mode for Blocks

Gutenberg 1.4 was released today with a new feature that allows users to edit HTML on a per-block basis. HTML mode can be triggered by toggling the ellipsis menu and selecting the HTML icon. This will switch the block between visual and text mode, without having to switch the entire document into text mode.

Contributors debated on whether or not to place the HTML button in the quick toolbar or to add the button to the side of the block. Eventually, they landed on putting the trash icon, the cog settings, and this new HTML mode under an ellipsis.

Gutenberg testers will also notice that version 1.4 redesigns the editor’s header, grouping content actions to the left and post actions to the right.

This release adds the initial REST API infrastructure for reusable global blocks, an idea Matias Ventura proposed several months ago. The pull request was created by new Gutenberg contributor Robert Anderson, a web and mobile developer at Tumblr. It is based on the technical details that Weston Ruter outlined for creating dynamic reusable blocks. Anderson highlighted a few examples of what this infrastructure will eventually enable for users:

  • Convert a block into a reusable block, and give it a name
  • Convert a reusable block back into a regular block
  • Edit a reusable block within a post and have the changes appear across all posts
  • Insert an existing reusable block into a post
  • Delete an existing reusable block

Anderson said the next step is adding a core/reusable-block block to the editor that can be rendered and edited, followed by a UI for adding, deleting, attaching, and detaching reusable blocks.

Gutenberg 1.4 will now show a users’ most frequently used blocks when hovering over the inserter. If the editor doesn’t have enough usage data, it will display the paragraph and image blocks by default.

Version 1.3 of the plugin introduced a new feedback option for testers with a link in the Gutenberg sidebar menu. Ventura reported that the team has received 12 responses so far, which included four bugs and two proposed enhancements. Check out the full changelog for 1.4 for more details on what’s new in the latest beta release.

WordPress 4.9 Adds Scheduling, Drafts, and Front-End Preview Links to the Customizer

While WordPress 4.8 focused on adding new widgets, visual improvements to links in the text editor, and a new dashboard widget that displays nearby events, WordPress 4.9 places a heavy emphasis on customization.

In WordPress 4.9, the Customizer has a new publish button with options to publish, save draft, or schedule changes. Edits made via the Customizer are called changesets that have status’ similar to posts. These improvements were incorporated from the Customize Snapshots and Customize Posts feature plugins.

New Customizer Publishing Options

Those who design sites will appreciate the ability to easily share a link that provides a front-end preview to changes. Note the About This Site widget at the bottom of the page.

This eliminates the need to publish changes to a live site or give users access to the WordPress backend. Links are generated by saving a draft in the Customizer.

Clicking the Discharge Changes link removes unpublished edits. Scheduling changes is as simple as choosing a day and time for them to take place.

These are just a few of the improvements in WordPress 4.9 which you can try out for yourself by downloading and testing WordPress 4.9 beta 1 on a test site. Alternatively, you can install the WordPress Beta Testing plugin on a test site, configure it for point release nightlies, and update to 4.9 Beta 1.

Stay tuned as we go in-depth on some of the other features in WordPress 4.9 in the coming days.

Gutenberg Engineer Matías Ventura Unpacks the Vision for Gutenblocks, Front-End Editing, and the Future of WordPress Themes

photo credit: KaylaKandzorra i miss you grampa.(license)

In a post titled Gutenberg, or the Ship of Theseus, Matías Ventura breaks down the vision for how the project will transform WordPress’ content creation experience and the decisions the team has made along the way. Ventura describes how WordPress has become difficult to customize, as online publishing has embraced rich media and web design has evolved in complexity over the years.

“WordPress can build incredible sites, yet the usability and clarity that used to be a driving force for its adoption has been fading away,” Ventura said. “The present reality is that many people struggle using WordPress as a tool for expression.”

Ventura’s words hint at the growing threats from competitors whose interfaces define users’ current expectations for a front-end editing experience. If WordPress is to stay afloat in a sea of competitors, it can no longer continue expanding its capabilities while leaving a disconnect between what users see while editing in the admin versus what is displayed on the frontend.

“WordPress has always been about the user experience, and that needs to continue to evolve under newer demands,” Ventura said. “Gutenberg is an attempt at fundamentally addressing those needs, based on the idea of content blocks. It’s an attempt to improve how users interact with their content in a fundamentally visual way, while at the same time giving developers the tools to create more fulfilling experiences for the people they are helping.”

Ventura elaborated on the foundations of the block approach to content creation and how it will expose more functionality to users in a unified interface, bringing more opportunities to the plugin ecosystem. The post offers some clarity for those who have been wondering about the decision to “make everything a block.” Ventura also anticipates that blocks will become a big part of WordPress theming in the future:

Themes can also provide styles for individual blocks, which can, in aggregation, fundamentally alter the visual appearance of the whole site. You can imagine themes becoming more about the presentation of blocks, while the functional parts can be extracted into blocks (which can potentially work across multiple theme variations). Themes can also provide templates for multiple kind of pages—colophon, products, portfolios, etc., by mixing blocks, setting them up as placeholders, and customizing their appearance.

Ventura also introduced a few new possibilities that Gutenberg could enable. He shared a video showing how granular control over each block can pave the way for a future where WordPress core allows for real-time collaborative editing. This is a feature that has been painfully lacking from the CMS but is nearer on the horizon with Gutenberg in place.

“This same granularity is allowing us to develop a collaborative editing framework where we can lock content being edited by a peer on per block basis, instead of having to lock down the whole post,” Ventura said.

Ventura sees Gutenberg as the path to finally bringing front-end editing to WordPress:

Once Gutenberg is capable of handling all the pieces that visually compose a site—with themes providing styles for all the blocks—we end up with an editor that looks exactly like the front-end. (And at that point, we might just call it front-end editing.) Yet we’d had arrived at it through gradually improving the pieces of our familiar ship, in a way that didn’t cause it to collapse or alienated the people aboard. We want to accomplish this in a way that would allow us to refine and correct as we iterate and experience the reality of what is being built and how it is being used.

He likened the challenge of the Gutenberg project to upgrading the materials on a ship while ensuring that it continues to sail. As there are many passengers who depend on the boat, completely breaking it for the purpose of rebuilding is not an acceptable way forward.

“It is an attempt at improving how users can connect with their site in a visual way, not at removing the flexibility and power that has made WordPress thrive,” Ventura said. “There might be a time when the old ways become obsolete and disappear, absorbed by the richer and clearer interface of blocks, but we are doing as much as possible to make this a process. The old doesn’t have to disappear suddenly, it can be gradually shaped into the new.”

Comments are not enabled on the post, but it has received mostly positive feedback on Twitter. For some, it clarifies the direction of Gutenberg, the purpose of blocks and the possibilities they enable. Others in the community are on board with the concepts behind Gutenberg but are not comfortable with the tentative timeline for its inclusion in core. Ventura’s post does not address many of the more practical concerns the community has about allowing enough time for the WordPress product ecosystem to get ready for Gutenberg.

Matt Mullenweg has confirmed that Gutenberg will ship with WordPress 5.0 whenever Gutenberg is ready and most recently said that delays on selecting the JavaScript framework “will likely delay Gutenberg at least a few weeks, and may push the release into next year.”

Last week, a post published by Yoast SEO founder Joost de Valk sparked conversation with his proposed alternative approach to Gutenberg, which calls for a slower, staged rollout for plugin authors.

“In this point of time, it’s not possible for plugins at all to integrate with Gutenberg,” de Valk said. “How on earth should plugin authors be able to build their integrations within a few months? That’s not possible. At least not without breaking things.”

His proposal recommends keeping the idea of blocks and making over the admin for WordPress 5.0 but leaving the meta boxes and toolbar untouched.

“We are very enthusiastic about the idea of blocks, but have strong concerns about some of the technical choices and the speed of the implementation process,” de Valk said. “We are also worried about the lack of priority given to accessibility issues in the project. But most importantly, we are very much concerned about the fact that plugins are not able to integrate with the new editor.”

It’s impossible for developers to have a clear understanding of the right way to extend Gutenberg right now. The JavaScript framework for the plugin has not yet been announced and critical issues regarding how block data should be stored are just now being floated for discussion.

“The Editor/Gutenberg team would like the broader core group to start thinking about and discussing how block data is stored,” Ventura proposed during last week’s core development meeting. “We currently (specially after allowing meta attributes) have a lot of ways to store block data, with different tradeoffs. It’s going to be important to communicate when each is appropriate. This will come through examples and documentation, but generally such knowledge has also spread by core contributors doing talks and blog posts, etc.”

Further collaboration from the broader community of WordPress core contributors should bring the project closer to being able to deliver the documentation developers need in order to follow best practices for extending the new editor. In the meantime, Ventura’s post is a great read for understanding the larger vision behind Gutenberg and where it is headed.

How to Build an Amazon Affiliate Store Using WordPress

Do you want to build an Amazon affiliate store using WordPress? An Amazon affiliate store allows you to sell products from as an affiliate and earn a commission. In this article, we will show you how to easily build an Amazon affiliate store using WordPress.

How to build an Amazon affiliate store using WordPress

Getting Started With Amazon Affiliate Store and WordPress

Amazon is the largest online store in the world. They also have an affiliate program which pays you a commission on every purchase made by a customer you referred.

You can recommend Amazon products on your existing website or create a new Amazon affiliate store to make money online.

WordPress with WooCommerce makes an excellent ecommerce platform to build your Amazon affiliate store. WooCommerce already powers millions of ecommerce websites all over the world.

To get started, you will need to be using platform (See vs

You will also need a WordPress hosting account, a domain name, and an SSL certificate if you want to accept payments for other non-affiliate products on your website.

Typically, a domain name costs around $14.99 / year, web hosting costs around $7.99 / month, and SSL certificate costs around $69.99 / year.

If you are just starting out, then this is quite a lot.

Thankfully, Bluehost, an official WordPress and WooCommerce recommended hosting provider, has agreed to offer our users a free domain name, free SSL certificate, and a discount on web hosting.

Basically, you can get started for $2.75 / month.

→ Click here to Claim this Exclusive Bluehost offer ←

After purchasing hosting, follow the setup instructions in our how to start an online store article. It will walk you through sign up process, and setting up WooCommerce.

Once you have installed WordPress, you can come back here and follow the instructions below to setup your Amazon affiliate store.

Signing up for Amazon Affiliate Account

Now that you have installed WordPress and WooCommerce, you will need to sign up for an Amazon affiliate program to start adding products with your affiliate ID.

Head over to Amazon Affiliate program website and click on the ‘Join now for free’ button.

Join Amazon affiliate program

Next, you’ll be asked to login with your existing Amazon account or sign up for a new account.

Login or sign up

Once you are logged in, you’ll need to provide payee information and answer questions about your website. Follow the on-screen instructions to complete your profile.

Affiliate program wizard

Upon completion, your application will be reviewed and approved by Amazon.

Adding Amazon Affiliate Products in WooCommerce

WooCommerce makes it very easy to add external affiliate products to your website. It allows you to offer a native user experience and integrate affiliate products seamlessly into your website.

To add a product go to Products » Add New page.

Adding a new affiliate product in WooCommerce

First you need to provide a title for the product you are adding and then add a detailed description in the post editor.

After that, scroll down to product data meta box and select ‘External/Affiliate Product’ under ‘Product type’ dropdown menu.

Product URL

Now you need to enter the product affiliate URL. You can get the URL from your Amazon Associates account dashboard. Simply search for the product and then click on the get link button.

Get product link

Copy the URL and paste it on your product edit page in WordPress. After that you need to add the product price. If there is a sale going on then, you can also add the sale price.

Below the product data, you can provide a short description for the product. This description will be displayed on the shop front page and in search results.

To your right, you can add a product image and product gallery images. You can find the product images from the product page on Amazon.

Product images

You can now click on the publish button to make the product go live on your website.

Repeat the process to add more affiliate products to your website. Once you have added a few products, you can go and visit the shop page on your website to see the products in action.

Shop page

Growing Your Amazon Affiliate Store

Now that you have set up your Amazon affiliate store, you can focus on growing your business.

Fortunately, there are many tools, plugins, and resources that will help you achieve those goals. You can start with SEO and optimize your store for search engines. Follow the step by step instructions in our WordPress SEO guide for beginners.

After that you can check out these useful tools and plugins for Affiliate marketing and the essential WordPress plugins for business websites.

Looking for a cool new design for your website? Check out our expert-pick of the best WordPress themes for affiliate marketers.

Above all, make sure that you are continuously adding useful products, helpful reviews, and targeted content to your website. In the end, that’s what your users are looking for and that’s what you should strive to offer them.

We hope this article helped you start an Amazon affiliate store using WordPress. You may also want to see our ultimate step by step WordPress security guide for beginners.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Build an Amazon Affiliate Store Using WordPress appeared first on WPBeginner.

YoastCon interview with Michiel and Marieke

November 2, 2017. This date has been etched in the collective Yoast agenda’s for some time now. If you haven’t guessed, it’s when the second edition of the YoastCon SEO conference takes place. This practical conference is aimed at every site owner, business manager, content editor or anyone remotely making money with a site and trying to improve their results. In this interview, you’ll hear from our own Marieke van de Rakt and Michiel Heijmans – who will also MC the event – on why you should visit YoastCon.

Don’t want to miss this epic SEO event? Get your ticket now for YoastCon 2017!

Get your ticket NOW »

Why YoastCon?

The first edition of YoastCon was all about celebrating the fifth anniversary of Yoast as a company. It was a small, down to earth SEO conference focussed as much on sharing SEO knowledge as it was a meeting of new friends and a rekindling of old ones. YoastCon was put together by a small team and it resulted in a great maiden voyage for the conference.

Come see Marieke and Michiel speak at YoastCon 2017 on November 2 »banner YoastCon

Michiel remembers how much work it was: “We wanted to celebrate five years of Yoast and we thought a conference was the best way to do this. It was an awful lot of work, but it paid off. It was a great ride! This was such a cool experience that we wanted to do it again but on a grander scale.”

Marieke concurs: “We probably won’t do this every year, because of the amount of work involved. However, we do have a lot more helping hands now, so never say never. The first YoastCon was one of the best days ever, so I’m really looking forward to the second edition!”

“YoastCon offers us a brilliant opportunity to not just talk about what we mean by holistic SEO, but show it as well. In that sense, it’s the perfect combination of sharing information and sharing knowledge that’s immediately applicable to any site. When you get home from the conference, you can take action that really helps you to achieve success,” Michiel says.

YoastCon is all about practical SEO, why exactly is that?

“People have a great need for practical insights. Something they can apply immediately. However, they find it hard to determine how to start. The Yoast SEO plugin is very practical as it helps you to improve your site by signaling when something could be improved. It’s a tool that you can start using at a moment’s notice. During the first YoastCon, we introduced our holistic SEO vision and now we’re going to make that abstract concept practical for people to apply, ” says Marieke.

What are the hot SEO issues at this event?

At a good SEO conference, you get both a taste of the now and the future. While the future of search is hard to predict, there are things site-owners can prepare for. Marieke is quick to mention the incredible power of content: “Content is the cornerstone of a good SEO strategy. Writing SEO-proof articles is a skill that takes work. Plus, these days you have to keep voice search in mind when writing content. Also, mobile and local SEO keep getting more important. All these things will be discussed at YoastCon.”

Michiel mentions that SEO is no longer seen as a trick, but that it has acquired a special status in projects: “These days, SEO is seen as something that delivers results. It’s accepted because it works. YoastCon is a place to learn how to use SEO to your advantage. Not just SEOs, but every site-owner, web developer, business owner or content strategist will learn something. Plus, it’s an excellent opportunity to extend your network. And you get to dance with all the cool people at the party. It’s going to be an awesome day!”

What are you looking forward to most?

“I’m really looking forward to MC’ing with Michiel,” Marieke blurts out. “But also my SEO copywriting workshop, that is going to be epic. I’m going to let the people write so much they’ll never forget the lessons learned. It’s great to be able to get direct feedback from people. It’s good to be reminded of how people perceive your work. We often miss that human touch since we work online all the time.”

Michiel is looking forward to seeing people interact with each other and with team Yoast as well: “We don’t often get this close to our audience. Now, we have to chance to share knowledge directly with a group of people that is eager to learn.”

How does YoastCon differ from other SEO conferences and WordCamps?

“We’re trying to combine the matter of SEO conferences with the openness and inclusiveness of WordCamps. We’re not just aiming at WordPress since there will be workshops on TYPO3 and Magento 2 as well,” Michiel says.

“I agree,” Marieke says: “We’re looking for a particular atmosphere. We don’t just let you listen to talks, but you can participate in workshops and we even offer you the chance to speak your mind on the future of WordPress, for instance. The talks are pretty exclusive if I may say so. You’ll get a lot of bang for your buck!”

Why should people visit the YoastCon SEO conference?

“You can’t miss this event if you are really serious about achieving success with your site. There’s a lot happening at the moment and this event gives you the chance to get up to speed and that may even turn out to give you the lead over your competitor. Besides that, it’s going to be an amazing day!” Marieke says.

According to Michiel, the event is aimed at everyone: “You can visit YoastCon if you own the bakery around the corner or if you manage a company of 40,000 strong. You have to go to YoastCon if you want to take your site to the next level. We have developed YoastCon from a very different mindset than your everyday SEO conference. It’s not just a conference, it’s a party for anyone making money with their site. And it’s in Nijmegen, the oldest city in The Netherlands, how cool is that! Go buy your ticket now, because they are selling like hot cakes. When they’re gone, they’re gone!”

Read more: ‘YoastCon 2017: a practical SEO conference’ »

The post YoastCon interview with Michiel and Marieke appeared first on Yoast.

Is your filter going to break the layout?

If you’re not clear about the difference between WordPress actions and filters, you may end up breaking the page layout of WordPress – maybe days, months, or even years after you’ve written and implemented a new filter hook.

The difference can be difficult for new developers to grasp – after all, hooking an action or filter runs your code, either way, right? Well, yes, it does, but filters can be executed several times, in different locations as the webpage is being built (header, body, footer, etc.), and even in the admin back-end. More importantly, filters do not send anything to the webpage! Filter hooks receive their data / text as an argument, and then “return” the modified (or original) data / text at the end. They do not use “echo”, “print”, “printf”, etc. – they should not send anything to the webpage. If you need to output something directly to the webpage, use an action – that’s what they’re for.

A good filter hook:

function my_filter_hook( $text ) {
    $text .= 'Adding some text.';
    return $text;

A bad filter hook:

function my_filter_hook( $text ) {
    echo 'Adding some text.';
    return $text;

How common is this problem?

Unfortunately, it’s much more common that you might think. The the_content filter, for example, is often a source of problems – developers may think their content filter hook is executed only once, when WordPress includes the post content, but post content may be required in header meta tags, widgets, in the footer, or even filtered in the admin back-end. The the_content filter may even be used on completely unrelated text, to expand shortcodes or format text. If you’re sending anything to the webpage from a filter hook, you’re doing it wrong – use an action instead.

How do you know if you have a badly coded filter?

If you activate a plugin that uses the the_content filter (as one example), and the webpage layout is affected, you may have an incorrectly coded filter hook. This problem is so common that plugin authors often avoid using the the_content filter for that very reason.

This problem can be frustrating for end-users to diagnose as well – often the only way is to start disabling plugins / change themes until the problem goes away, and reporting the problem to the plugin / theme author can also be challenging since it may, or may not, be caused by a filter hook – and if it is, determining which filter is affected can require some coding effort / knowledge.

This problem is so common, and so challenging for users to diagnose, that I even wrote a plugin specifically to fix and report which content filter hooks incorrectly send output to the webpage.

#action, #doingitwrong, #filter, #hook, #output

An alternative approach to Gutenberg

There’s a lot of discussion in the WordPress world right now about a new editing experience that’s in the making. It’s called Gutenberg. While some of that discussion is technical, every user that uses WordPress regularly should be aware of what’s coming. At Yoast, we are quite excited about the concept of Gutenberg. We think it could be a great improvement. At the same time, we have our worries about the speed in which the project is being pushed forward. And, we’re not excited about all the changes.

In this post I’ll first try to explain what Gutenberg is. Subsequently, I will tell you about the things that are problematic to us. Finally, I will tell and show you what we think should be done about the problems.

What is Gutenberg?

Gutenberg is a new approach to how we edit posts in WordPress. It’s basically a new editor. It tries to remove a lot of the fluff that we built up over the years. The intent is to make the new experience lighter and more modern. The end-goal is to make WordPress easier to use. That’s something we really appreciate at Yoast.

Gutenberg introduces the concept of “blocks“. The new editor will be a block-editor: paragraphs, headings, images and YouTube video embeds will all be blocks. Blocks will make it easier to learn how to work with WordPress. People starting out with WordPress, only have to learn the concept of blocks, instead of 3 or 4 different concepts. When we make WordPress easier to use, we make it more accessible to a larger group of people. Making editing easier was the goal from the outset, as Matt Mullenweg is quoted on the Gutenberg Github page:

The editor will endeavour to create a new page and post building experience that makes writing rich posts effortless, and has “blocks” to make it easy what today might take shortcodes, custom HTML, or “mystery meat” embed discovery. — Matt Mullenweg

As well as introducing blocks, Gutenberg also introduces a new look and feel for the editor. For me, the look and feel is mostly a copy of the Medium editor, an editor that got a lot of praise in certain online circles. Gutenberg appears a bit more modern, more contemporary.

New technology in Gutenberg

Besides introducing a new look and feel and the concept of editing blocks, Gutenberg also introduces an entirely new technology to WordPress. Gutenberg will use a lot of JavaScript, particularly React. While this change in itself is not interesting to the average user, it does impact how WordPress is built.

Here at Yoast, we are worried about the use of new technology combined with the introduction of big new concepts. This is bound to make for a rocky experience. We know from our own experience releasing Yoast SEO 3.0 (we’d rather not talk about that anymore). Even when releases are very well prepared, a lot can go wrong and you’ll be busy fixing it for a long time. We feel worried about the combination of new technology, completely renewed functionality, and the extremely ambitious time plan.

Plugins in Gutenberg

The concept of blocks brings some very powerful new tools to plugin authors. At Yoast, we have lots of ideas on how to make our content analysis better, faster, and more user-friendly with the Gutenberg editor. However, Gutenberg does currently not have the technical necessities in place to allow us to actually build that integration. Yoast SEO can’t integrate with the new editor (yet). Of course, we are actively involved in the technical discussions around this. We are currently heavily discussing how to make it possible for plugins to integrate.

Fact remains that, if you test Gutenberg right now, you’ll see that Yoast SEO is not on the page, anywhere. Nor, for that matter, are all the other plugins you might use like Advanced Custom Fields or CMB2. All of these plugins use so-called meta boxes, the boxes below and to the side of the current editor.

The fact that the Gutenberg team is considering changing meta boxes is, in our eyes, a big mistake. This would mean that many, many plugins would not work anymore the minute Gutenberg comes out. Lots and lots of custom built integrations would stop working. Hundreds of thousands of hours of development time would have to be, at least partly, redone. All of this while, for most sites, the current editor works just fine.

Accessibility issues

The current version of Gutenberg has major accessibility issues both in its frontend output and in the backend editor. This ranges from inline styles in the output to many other things.

We feel very strongly about accessibility. Not without reasons. The law in many European countries requires government institutions to have properly accessible websites. If Gutenberg breaks their accessibility, they will have to disable it, or face lawsuits. The Gutenberg team needs to realize that accessibility requirements are simply that: requirements.

To conclude: we are very enthusiastic about the idea of blocks, but have strong concerns about some of the technical choices and the speed of the implementation process. We are also worried about the lack of priority given to accessibility issues in the project. But most importantly, we are very much concerned about the fact that plugins are not able to integrate with the new editor.

When is Gutenberg coming?

In a recent post about the JavaScript library of choice for the WordPress ecosystem, WordPress’ project lead Matt Mullenweg said:

It will likely delay Gutenberg at least a few weeks, and may push the release into next year.

At Yoast, we were pretty shocked about these words. In its current form, Gutenberg is not ready -at all- for mainstream usage. In fact, we do not see it as being ready to be released anywhere in the first half of 2018. In our view, ready to be released also means that the community has had ample time to fix all of their integrations. In this point of time, it’s not possible for plugins at all to integrate with Gutenberg. How on earth should plugin authors be able to build their integrations within a few months? That’s not possible. At least not without breaking things.

So what should be done?

We think that taking the following three steps would bring Gutenberg much closer to release:

  • First of all, we should keep the blocks idea, as it’s a good one. And then we should start iterating, slowly. If you want the admin to get a modern “makeover” for 5.0: that’s doable. We don’t need to change how meta boxes are rendered for that to happen.
  • There’s also no need to move the toolbar (with bold, italics etc buttons) away from where it is (this has been discussed before). Medium does that, but that doesn’t mean it’s a good thing and it means more re-training than the team building Gutenberg seems to realize.
  • We should focus on making sure both the backend editor and the frontend output of Gutenberg meet basic accessibility requirements.

Once we’ve decided on the above, we should start educating plugin & theme developers on what will and what will not work in the new environment.

What should this look like?

We’ve made some mockups of what we think this could look like (click for larger versions):

Document level

Gutenberg editor mockup - block level

Block level

Gutenberg mockup - distraction free mode

Distraction free mode

Note that we have disabled the background color and text color controls in the block level mockup. These should be off by default in our opinion, and possibly only allow a subset of colors, chosen by the theme author, when enabled.

I’d love to discuss with you, in the comments here, on Github, on Slack: everywhere!

The post An alternative approach to Gutenberg appeared first on Yoast.

How to Fix ‘Another Update in Process’ Error in WordPress

Are you seeing “Another update currently in process” error on your WordPress site. This error stops you from updating WordPress. Normally, it should automatically go away. But if it doesn’t, then there is an easy fix for that. In this article, we will show you how to fix ‘Another update currently in process’ error in WordPress.

Fixing another update in process error in WordPresas

Why ‘Another Update in Process’ Error Occurs?

This message usually appears when a core WordPress update is running in the background and a user tries to initiate another update process.

During the core update process, WordPress automatically sets an update lock option in the database. This database option prevents your from running simultaneous updates on your website.

Another update in process message

This message is set to automatically disappear in 15 minutes or when the update process has finished. However, if you are stuck on that message or don’t want to wait, then you can manually reset it.

Let’s take a look at how to fix ‘Another update currently in process’ error in WordPress.

Fixing Another Update in Process Error

To quickly get rid of ‘another update in process’ message, you need to delete the core_updater.lock option from your WordPress database. We will show you how to do that using two different methods. You can choose the one that works best for you.

Method 1: Fix Another Update in Process Error Using a Plugin

First thing you need to do is install and activate the Fix Another Update In Progress plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, you need to visit Settings » Fix Another Update In Progress page. If updates on your website are locked, then you will see a message with a button to fix it:

Fix WordPress update lock

Simply click on ‘Fix WordPress Update Lock’ button to continue.

The plugin will the delete the WordPress core update lock option from your database, and you will see a success message like this:

WordPress update lock fixed

Method 2. Manually Fix Another Update in Process

This method requires you to use phpMyAdmin to directly run a query in your WordPress database.

First you need to visit the cPanel dashboard of your WordPress hosting account. Under the database section, click on the phpMyAdmin icon.


Next you need to select your WordPress database in phpMyAdmin. This will show you all the tables inside your WordPress database. You need to click on the Browse button next to the WordPress options table (wp_options).

WordPress options table

This will show you all the rows inside the options table. You need to find the row with the option name ‘core_updater.lock’ and click on the delete button next to it.

Delete core updater lock option

PhpMyAdmin will now delete the row from your WordPress database.

You can switch back to your WordPress website and proceed with updating your WordPress website.

We hope this article helped you fix ‘Another update in process’ error on your WordPress site. You may also want to see our ultimate list of the most common WordPress errors and how to fix them.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Fix ‘Another Update in Process’ Error in WordPress appeared first on WPBeginner.

Thoughts on releasing 7 plugin updates in 7 days

When getting ready to push a plugin update to the world last Monday, little did I know what the week had in store for me. I had no plans of publishing seven updates over the course of a week. I thought I’d get two or three updates done before I burned myself out wading through old code.

By Wednesday, I was already on a roll. I’d gotten three updates done. Once I made it that far, I figured I might as well keep going.

I spent a not insignificant chunk of time this morning debating whether to continue the streak.

Why not go for 14 days? Or 30?

I have enough plugins to make this a month-long affair. At a certain point, I’d have to stop. One week was a good stopping point. Not to mention, I have some client work lined up that will interfere with me continuing on.

The perfect is the enemy of the good

I know it’s a cliché, but clichés are clichés for a reason — it’s because they are profoundly true.

I tend to be known in some circles as a perfectionist. At times, that’s not a bad habit to have. At other times, it means I spend too much time pursuing the impossible that would be better spent elsewhere.

When putting together seven plugin updates in a week, you don’t have time to be a perfectionist. You just have to be good.

It’s only code. If I screwed something up, I can fix it in the next update. There’s a such thing as a patch release for a reason.

I’m in my 14th year of building things on the Web. I’ll admit that I’m a bit nervous about every single release I’ve ever sent out to users. This includes first, major, minor, and patch releases. No one wants to be that developer who just pushed a fatal error on 1,000s of sites.

At a certain point, you simply have to pull the trigger on a release and stop second-guessing yourself.

Weekends are for play

I work every weekend. Mostly, this is answering emails and taking care of odds-and-ends. I try to leave the serious work for during the week.

For the most part, I try to keep my weekends to fun stuff or chores around the house and garden. Now that I’m in my 30s, I’ve gotten a little better at this. Weekends should be for relaxing and giving the brain some time to reboot.

There’s rarely anything so important that can’t wait until Monday.

Stick to a daily schedule

Last year, I decided to stick to a daily schedule for work. I keep an 8 a.m. – 4 p.m. work schedule with a flexible hour before and after work just in case I need it. Of course, I have a lunch break built in there too. At the end of the day, it’s good to unwind and do some non-work things that you enjoy.

It was challenging getting a plugin update out by the end of the workday. I went over a couple of days but not by too much. If I didn’t finish by the end of the workday, I told myself to simply stop my streak.

There’s rarely anything so important that can’t wait until tomorrow.

Find balance and avoid burnout

One of the reasons I do my best to stick to a schedule is because I’m an all-in type of person. When I’m doing something, I put all my time and energy into that one thing. The bad thing about that is that it becomes easy to get burnt out.

Ask me about my last endeavor to learn Spanish. I spent two weeks learning everything I could, devouring everything about the language. By then, I was tired of it and haven’t been consistent in my lessons since.

So, the guy who just spent a solid week updating seven WordPress plugins is going to tell me to avoid burnout?

The old me would’ve tried for the 30 days until about the third week before waking up in a haze, surrounded by empty Hot Pocket wrappers and Dr Pepper cans. Seven days was me putting the breaks on things.

Check out the plugin releases

Thanks for taking the time to read the post if you’ve gotten this far. Feel free to share your thoughts.

If you want to see what plugins I released last week, here are the announcement posts:

The post Thoughts on releasing 7 plugin updates in 7 days appeared first on Justin Tadlock.

New WP-CLI Project Aims to Extend Checksum Verification to Plugins and Themes

The WP-CLI team is initiating a new project that aims to bring checksum verification to plugins and themes. Checksums are a method of verifying the integrity of files. Three years ago, WP-CLI added the capability of verifying WordPress core checksums using the MD5 algorithm. This is a useful security feature that allows developers to easily see if any files have been modified or compromised.

The core checksums are handled via WordPress’ official API ( and WP-CLI contributors are planning to extend this infrastructure to plugins and themes hosted on

“Having this kind of functionality for plugins and themes as well would be a huge security benefit,” WP-CLI co-maintainer Alain Schlesser said. “It would allow you to check the file integrity of an entire site, possibly in an automated fashion. However, there is no centralized way of retrieving the file checksums for plugins or themes yet, and the alternative of downloading the plugins and themes from the official servers first just to check against them is wasteful in terms of resources and bandwidth.”

Contributors are currently exploring different options for implementation in a discussion on GitHub, inspired by an existing wp-checksum project by Erik Torsner.

“The simplest possible infrastructure to go with would be flat files (no database),” WP-CLI maintainer Daniel Bachhuber said. “I’ve chatted with the corresponding folks about hosting. If our middleware application can generate flat files served by some API, then it will be fine to sync those flat files to a server (with rsync or similar).”

The team is considering building the API under a separate URL for testing and iteration and then incorporating it back into’s infrastructure once it is ready. However, the sheer size of the SVN checkouts and the CPU required to sync the files makes it an interesting challenge. DreamHost has volunteered a server for the team to run its checksum generator on while the infrastructure is being developed.

Torsner’s WP-CLI subcommand to verify checksums for themes and plugins currently only works with those hosted on, but he is also experimenting with mechanisms for getting checksums from some commercial vendors, including Gravity Forms and Easy Digital Downloads. He said he hopes the project would be capable of keeping these capabilities for commercial plugins after it is incorporated back into

The Plugin and Themes Checksums project is currently in the initiation stage and will have an official kickofff during the next WP-CLI meeting on Tuesday, October 3, 2017, at 11:00 AM CDT. Anyone who would like to volunteer is encouraged to attend, especially those with an interest in security, systems administration, and the technology required to get this project off the ground.

“This project will have a huge impact on the perceived and effective security of WordPress installations,” Schlesser said. “It can greatly reduce the amount of malware-infested sites plaguing the internet, and through the substantial market share of WordPress, improve the general browsing experience for all net citizens.”

Gutenberg 1.2 Adds Postmeta Support and Extended Settings Placeholder

WordPress contributors have not yet made a final decision on the JavaScript framework to adopt for core, but Gutenberg development continues on with version 1.2 released this week.

The update provides a better experience resolving block conflicts when switching between the “classic editor” and Gutenberg. Previously, if a user had created some paragraph blocks in Gutenberg but switched to the classic editor, the tags would get stripped out, making those blocks invalid when moving back to Gutenberg. Version 1.2 merges a pull request that detects whether the post contains blocks and then disables the wpautop behavior in the classic editor to prevent it from stripping the tags.

This release also offers initial support for postmeta in block attributes. Gutenberg contributor Gary Pendergast tweeted an example plugin for those who want to experiment with it.

Another new item you’ll notice in version 1.2 is the addition of word and block counts to the table of contents. The value of knowing how many blocks are in play on the page or how many headings have been used is not immediately evident. It strikes me as a rather large and obtrusive display of non-essential information, which for some reason has been given priority placement at the top of the editor.

Gutenberg is getting ready to support metaboxes and this release adds a placeholder for the proposed Extended Settings panel. The metabox placeholder shell currently sits beneath the content with a “coming soon” message.

Developer Ross Wintle commented on the pull request with a few concerns about the naming and placement of this panel with notes on how it might impact interfaces that have required meta fields:

a) Meta boxes currently have several places that they can live: in the sidebar, below post content with different priorities and contexts
b) I also have cases where I’ve improved the editing experience for my users by having meta boxes above or below the title because this fits with their content editing flow.
c) I really don’t like the “Extended settings” title. For some editing workflows the information in meta boxes is actually critical, core content/settings, not something optional/added-on/extended. Is this editable? Can developers add additional sections of their own like this?

Gutenberg engineer Riad Benguella acknowledged these concerns as legitimate and said the team is still exploring different options for the panel.

“For the first iteration, we’ll probably keep the collapsed state but have multiple areas,” Benguella said. “There are some good design proposals dropping the expanding area (for the content area) and replacing them with “separators,” which might be good as a v2.”

It may have seemed like Gutenberg development has been on hold due to the delayed JavaScript framework decision, but development is still ongoing. It slowed over the past couple weeks while most of the project’s chief contributors were attending the Automattic GM.

“The framework decision doesn’t affect most Gutenberg development work – because the framework is hidden behind a compatibility layer, the majority of development work (at least, the work that touches the UI) can talk to the compatibility layer,” contributor Gary Pendergast said.

“There are also large areas of code that don’t need the framework at all. For example, adding postmeta support was just about writing the glue between the Block API and the REST API.”

Pendergast said that even once a JavaScript framework decision is made, Gutenberg will only require one or two developers to work on the necessary changes, but all other contributors will be able to continue on without any issues.

How to Install WordPress in a Subdirectory (Step by Step)

Do you want to install WordPress in a subdirectory? Installing WordPress in a subdirectory allows you to run multiple WordPress instances under the same domain or even a subdomain name. In this article, we will show you how to install WordPress in a subdirectory without affecting the parent domain name.

Install WordPress in subdirectory

Subdomain vs Subdirectory? Which One is Better for SEO?

Normally, you would want to start a WordPress website on its own domain name (for example, However, sometimes you may want to create additional websites on the same domain name.

This can be done by either installing WordPress in a subdomain ( or as a subdirectory (

One question that we get asked is which one is better for SEO?

Search engines treat subdomains differently from root domain names and assign them rankings as a totally different website.

On the other hand, sub-directories benefit from the domain authority of the root domain thus ranking higher in most cases.

An easier way to create separate WordPress sites in both subdomain or subdirectory is by installing WordPress multisite network.

However, if you want to keep two websites managed separately, then you can install different instances of WordPress.

That being said, let’s take a look at how to install WordPress in a subdirectory.

Step 1. Create a Subdirectory under The Root Domain Name

First you need to create a subdirectory or folder under your root domain name. This is where you will install WordPress files.

Connect to your WordPress hosting account using a FTP client or File Manager in cPanel.

Once connected, go to the root folder of your website. Usually it is the /public_html/ folder. If you already have WordPress installed in the root folder, then you will see your WordPress files and folders there.

Next, you need to right click and select ‘Create new directory’ from the menu.

Create subdirectory

You need to be careful when choosing the name for your subdirectory. This will be part of your new WordPress site’s URL and what your users will type in their browsers to reach this website.

For example, if you name this directory travel-guides then your WordPress website’s address will be:

New subdirectory created

Step 2. Upload WordPress Files

Your newly created subdirectory is empty at the moment. Let’s change that by uploading WordPress files.

First you need to visit website and click on the download button.

Download WordPress

Your browser will now download the zip file containing the latest WordPress software to your computer.

After downloading the file, you need to select and extract it. Mac users can double click the file to extract it and Windows users need to right click and then select ‘Extract All’.

After extracting the zip file, you will see ‘wordpress’ folder containing all the WordPress files.

Now let’s upload these files to your new subdirectory.

Connect to your website using a FTP client and go to the subdirectory you created in the first step.

In the local files panel of your FTP client, go to to the WordPress folder you just extracted.

Select all files in the WordPress folder and then upload them to your new subdirectory.

Upload WordPress files to the subdirectory

Step 3. Create New Database

WordPress stores all your content in a database. You need to create a new database to use with your new WordPress site installed in a subdirectory.

First, you need to login to the cPanel dashboard of your WordPress hosting account. Click on ‘MySQL Databases’ under the databases section.

MySQL database

On the next screen, you need to provide a name for your new database and then click on ‘Create Database’ button to continue.

New database

Your cPanel dashboard will now create the new MySQL database. In order to use this database you need to create a MySQL username.

Scroll down to MySQL Users section and provide a new username and password. Click on ‘Create User’ button to continue.

New MySQL user

Next, you need to give this newly created user privileges to work on the database you created earlier.

Scroll down to ‘Add user to database’ section. Select your MySQL username and then select your newly created database.

Add user to database

Click on Add button to continue.

Cpanel will now grant the MySQL user full privileges on your newly created database.

Step 4. Install WordPress

Now that everything is in place, you can go ahead and install WordPress. Simply visit the directory you created earlier in a web browser by typing the URL like this:

This will bring up the WordPress installation wizard. First you need to select the language for your WordPress website and click on the continue button.

Select language

Next, you will be asked to provide your WordPress database name, database username, password, and host. Enter the database details and click on the submit button.

Provide your database details

WordPress will now connect to your database and you will see a success message like this:

WordPress database connected

Click on ‘Run the install’ button to continue.

On the next screen, you will be asked to provide a title for your website and choose an admin username, password, and email address.

WordPress website details

After entering your website details, click on ‘Run install’ button to continue.

WordPress will now set up your website and will show you a success message:

WordPress successfully installed in the subdirectory

You can now go ahead and login to your new WordPress website installed in the subdirectory.

Step 5. Fix Permalinks

If you have a separate WordPress install in the root directory, then the .htaccess files of your subdirectory will cause conflict. This will result in 404 errors on your website.

To solve this, you need to edit the .htaccess file in your subdirectory WordPress install. Replace the code inside your .htaccess file with the following code:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /your-subdirectory/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /your-subdirectory/index.php [L]

# END WordPress

Don’t forget to replace /your-subdirectory/ with your own subdirectory name.

We hope this article helped you install WordPress in a subdirectory. You may also want to see our ultimate step by step WordPress SEO guide for beginners.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Install WordPress in a Subdirectory (Step by Step) appeared first on WPBeginner.

11 Ways To Dramatically Speed Up Your Website From A Technical Perspective

.. But what if the website can’t handle that much traffic? That would reflect in 4xx and 5xx error codes, unresolved pages or complete downtime. As we know, 404s are not a big deal SEO-wise, but customer dissatisfaction can affect your bounce rates and impact your overall strategy in the long run.

Website speed is also one of the ranking factors that Google takes into account. Here’s what Matt Cutts said on the official Google Webmaster Central Blog back in 2010:

You may have heard that here at Google we’re obsessed with speed, in our products and on the web. As part of that effort, today we’re including a new signal in our search ranking algorithms: site speed. Site speed reflects how quickly a website responds to web requests.

As webmasters, we should keep website speed into account and consider it an important part of every SEO strategy. Here’s a short guide on analyzing and improving the site load time of a website.

Testing The Speed Of Your Website

There are several tools that you can use in order to test the load time of your website(s), such as Pagespeed Tools and YSlow. A good alternative would be checking GTmetrix out, which combines the best of both worlds:

A standard test would outline several different sections:

  • Pagespeed Score – a rank between 1-100% based on the Pagespeed chart (higher is better);
  • YSlow Score – the result would be within 1-100% as well, validating additional criteria provided by YSlow;
  • Page Load Time – the amount of time for loading the page. GTmetrix uses different test servers in multiple locations, so this may vary, but lower is always better (studies show that there is an average of 25% abandonment rate for sites loading for 4 seconds or longer);
  • Total Page Size – the size of the generated HTML of your page, plus all of its assets (scripts, styles, fonts, images);
  • Requests – the number of requests to resources linked within your HTML document – assets and images required for rendering your site successfully;
  • List of Recommendations – a handy list of recommendations by GTmetrix for common problems that affect your load time.

Following the recommendations is a straight-forward way of improving the load time for your website. However, some of them are not entirely clear, and more often than not are outside of your control – unless you adhere to a set of best practices or compromise certain features of your site during the performance optimization process.

Website speed is often assessed on desktop machines and laptops for standard business websites or blogs, but there are other considerations that affect mobile users and eCommerce stores as well. Kissmetrics has conducted a detailed research on how loading time affects the bottom line. I also believe that Stellasoft have an interesting post on the matter, too.

How Loading Time Affects Your Bottom Line

Factors Affecting the Website Speed

There are numerous factors that affect the website speed, such as:

  • Your CMS;
  • The template/theme in use;
  • Additional features that include extra assets;
  • The hosting provider and your hosting plan;
  • Configuration arguments for your host/website;
  • Your content.

A slow website is a byproduct of several factors, and you can experiment with each of them until you get the best performance results without affecting the user experience for your readers.

Each CMS loads a good amount of code that should be processed by the web server – which inevitably takes some time. Your theme provides unique styling through a set of CSS stylesheets and fancy scripts, among a few images such as your logo, featured images for your posts, or a favicon. Your host also plays a major role in forming the final speed, defining;

  • the time for processing an initial request
  • a series of arguments that could optimize a site for higher traffic
  • caching layers handling a larger number of signed-up users or articles

Quick Tips for Speeding Up a Website

1. Use a caching plugin

Most popular CMS offer third-party solutions that help out with caching your website. In a nutshell, cached pages are generated once and then a static version is served to guest visitors for a limited amount of time.

If we take an online magazine as an example, its homepage usually lists several posts from multiple categories, among a number of additional features (such as the current weather, the latest news from relevant sources, or the last current number of registered users). Each of those results in a long number of code iterations, as well as a large volume of database queries fetching the latest entries to date.

However, if the magazine doesn’t post often, the homepage will show the same results over the course of a few minutes or even a couple of hours. A caching plugin will take a snapshot of the homepage and serve a clean HTML with the pre-generated data, thus massively reducing the server load, reducing the load times, and allowing for more visitors browsing the site simultaneously.

If you rely on WordPress for your website (currently powering 27% of the Internet), a couple of popular choices are W3 Total Cache and WP Super Cache. A reliable alternative (although premium) is WP Rocket, supporting a certain set of edge cases that occur with specific hosts or various plugins out there.

2. Enable gzip compression

Gzip compression can be enabled for a website on an application or a server level, which reduces the volume of data transferred while serving a website. Think of it as archiving a folder on your computer and sending it via email – it would be more compact and faster for downloading by your colleagues or friends, while they can still access the information easily by decompressing the content.

Modern browsers are used to serving gzip content for optimization purposes and do it blazingly fast – providing you with better UX especially on slower networks or mobile devices.

3. Use a Managed hosting provider

Cheap hosts or generic hosting providers often don’t provide the best performance. Luckily, there are managed hosting providers that specialize in a given platform and fine tune the system for best performance.

An example in the WordPress space is Pagely, specializing in scaling WordPress for large brands. Through a combination of server adjustments, they strip down the standard server layer and configure their instances for higher load, allowing them to host websites receiving over a hundred million visitors a month. The infrastructure of a managed provider is custom tailored to the platform’s needs, often cutting the load time in half, in addition to providing additional benefits such as specialized security fixes for your plugins and automatic updates.

One of the hosting-and-network-related challenges is the Time-to-First-Byte (TTFB) issue, or the amount of time it takes a server to start sending data over to a visitor’s browser. It’s a combination of code quality, server load times, network speed, bandwidth availability and a few more, but managed hosts usually specialize in keeping the TTFB to the minimum, which affects all of your websites and their pages together.

4. Resize your images

A large percentage of websites online list thumbnails while using the original uploaded photo, instead of resizing it. A large blog or an online magazine may very well display 40 or 50 high-res images on the homepage which could add up to 10MB of page size, making it nearly impossible to render for under 30-40 seconds on a mobile device.

Given the bandwidth limitations and poor user experience, resizing your images is a great way to improve the speed time of your website:

  • Analyze your media-heavy pages and make sure that you’re rendering small images;
  • Register thumbnail sizes that your CMS can provide for you (helping out with cropping or scaling), and serve them instead;
  • Or use an automated solution like Imsanity that compresses and resizes your images for best user experience online.

5. Don’t overcomplicate your feature set

Often website managers try to provide as many features as possible – accessible by their users, or simplifying their administrative experience. Some of those plugins may be poorly developed or simply heavy, which drastically adds up to your page load time.

If you have a test clone of your website (also known as a staging environment), try to deactivate all of your extensions and test the website speed with and without plugins. A list of 20-30 active plugins can add several seconds of extra load time, which can be avoided by deactivating plugins that are not essential, replacing them with alternatives, or hiring a professional development company that would build a custom solution which works much better.

6. Stick to a simple look and feel

Plenty of templates available for your website serve as a Swiss Army Knife – providing a complete set of everything that you can think of. Multipurpose themes cater for several markets, and you may end up with a theme that includes a list of features for the real estate or financial market while you’re looking for a simple business website or a blog.

Therefore, sticking to a simple and clean theme is often beneficial for your website speed.

  • Fewer features would decrease the computation while rendering your page;
  • Less styling mean less CSS, hence lower page size and fewer external requests;
  • Clean themes don’t add as many background patterns or parallax images or sliders, which is a huge win speaking of speed.

Relying on a minimalist classic view will let you focus on your quality content while serving results instantaneously to your readers.

7. Load scripts asynchronously

Business owners don’t have control over the majority of the code running their website, but due to marketing and advertisement purposes, a lot of 3rd party snippets are being incorporated across a website or at all pages (Google Analytics, other tracking tools, data reporting engines, lead forms and the like). Here’s a sample chart from Readspeaker explaining how async requests work and how to avoid render delays:

Whenever possible, load scripts in the footer and try to load them as async resources, instead of synchronously loading in the site. The standard behavior (unless otherwise specified) would interrupt the HTML parsing while scripts are executing, hence increasing your page load time.

There is a good reason for the default processing order. Some scripts may adjust your document by adding new containers or restyling everything to follow, which is why browsers are patient and want to avoid concurrency issues.

If your script can be loaded without rushing, this would decrease the amount of time for loading your page. Here’s a sample guide from Google on asynchronous ad code insertion. Some of the caching plugins (or additional tools) allow for adjusting those on-the-fly, but best case scenario this is being done on a code level.

8. Minimize and combine your assets

Browsers have a limit of simultaneous remote requests that they can process, including your HTML, images, styles, scripts, or fonts. For example, if your homepage loads 20 images, 2 fonts, 6 stylesheets from your theme and plugins and 10 JavaScript source files, the complete page download would need to happen into several iterations.

Let’s review the homepage of Yahoo. It loads 267 remote requests, and you can see how resources are downloaded in chunks in this waterfall chart:

Most popular browsers support 6 or 8 simultaneous connections, and additional requests need to wait for a download to complete before moving to the next resource in the queue. Which adds a massive load to the page load time (reported as up to 22 seconds for Yahoo).

A common best practice is minifying and combining resources in order to reduce the amount of separate connections to each third-party source.

Minifying is compressing each script or style by trimming all whitespace, replacing variable names to shorter strings or even characters (lower end file size) and optimizing other aspects for performance. Combining comes right after by appending several files to a single file, hence resulting in less remote requests as a result.

This can be done on a code level, but is also doable through certain minification and combining extensions, tools, or plugins. Keep in mind that, due to code specifics, this may cause regressions with certain scripts or override sections of the website, so proceed with caution and test carefully.

9. Leverage Browser caching

Browser caching is a helpful asset that reduces the bandwidth of downloaded resources.

It is normally enabled by default on most browsers and can be activated with the right expire headers on a server level (usually done in code, or by caching plugins). Essentially what it allows you to do is serve the initial version of your website once, and then reuse most of the assets locally for following page requests.

For instance, after loading the homepage of an optimized website, navigating to an internal page will be faster, since the browser won’t request again the logo in the header, the styling of the menu, or the footer carousel with testimonials. Reusable assets will be gathered from the local browser storage, hence reducing a number of requests needed to the remote server.

Setting up the right expire headers may be tricky, as regularly updated websites may cause regressions with certain assets not flushed. There are workarounds there, so it’s advised that hard caching is mainly used for assets that would stay the same for quite some time (like your company logo that you don’t change daily or weekly).

10. Avoid redirects

Redirects are a common strategy used by SEO experts in order to bring more link juice to a certain page or refer canonical resources, or satellite website links. That said, redirects produce additional requests, which may recursively make the load time slower for integrated resources (such as embedded widgets for weather or currency conversions, or complex ads).

Reducing the number of redirects will improve the speed time, and ensure that no security warnings would be triggered by the browser if it identifies that as a potentially malicious activity, thus affecting your traffic as well.

11. Set up a CDN

Content Delivery Networks are services that connect with your website, gather the assets and distribute them to a large number of zones across the world. Popular solutions are Cloudflare and MaxCDN, both providing alternative data centers in North and South America, Europe, Asia, and Australia (some reaching out to Africa as well).

Distributing assets to a CDN will reduce the traffic load to your main web server and allow for more concurrent users to browse the website simultaneously, without waiting for their turn in line. Moreover, website visitors will be able to download assets from your website from their closest location – reducing additional network time overseas (for instance, a visitor from Paris opening a New York-hosted website can download all images, styles, and scripts directly from a CDN endpoint in France or Germany, instead of going all the way to the US and back, talking to the original server).

CDNs can drastically reduce the load on your server and page load times to your website, and can additionally provide security features, limiting the number of bot attacks or crawlers playing with your website.

The post 11 Ways To Dramatically Speed Up Your Website From A Technical Perspective appeared first on Mario Peshev.

WordPress: Plugin Development

[ WordPress: Plugin Development ] After months of hard work, I am excited to announce the launch of my new video course on developing WordPress plugins. It covers the entire process of building, securing, and optimizing your own plugins, including 50+ ready-to-go plugin demos and examples. The course is focused on developing plugins using the WP API and Standards. Covers basics and gets into advanced topics like HTTP API, REST API, and WP Cron. Truly packed with practical examples and techniques to help you create your own awesome plugins. Check it out at »

Course Contents

WordPress: Plugin Development is an in-depth course spanning 38 video tutorials: nearly five hours of plugin-building action. As mentioned, the course includes over 50 plugin demos and examples. It’s designed for people who are familiar with WordPress in general, and have some experience working with the basics of PHP. Here are the contents of the course:

First Steps

  • Course overview
  • Preparing for development
  • Exploring WordPress plugins

Plugin Basics

  • Getting started
  • Exploring WP APIs
  • Overview of action and filter hooks
  • Plugin activation and deactivation
  • Pluggable WordPress functions
  • Developing secure WordPress plugins
  • Best practices for plugin development

Building a WordPress Plugin

  • Creating the plugin directory and files
  • Adding Administration Menus
  • Adding the plugin settings page
  • Adding settings callback functions
  • Validating plugin settings
  • Adding custom functionality
  • Including JavaScript and CSS
  • Plugin internationalization
  • Adding an uninstall feature
  • Testing and debugging

Essential Plugin Techniques

  • Customizing the WP Loop
  • Creating widgets
  • Managing users and roles
  • Working with JavaScript & CSS
  • Using the Options API

Extending Plugin Functionality

  • Adding Custom Post Types and Taxonomies
  • Working with Custom Fields
  • Adding Meta Boxes
  • Working with custom database queries
  • Integrating Admin Notices

Advanced Plugin Techniques

  • Using the Transients API
  • Using the HTTP API
  • Using WP-Cron
  • Implementing Ajax
  • Using the REST API


  • Going further

Check it out

If you want to learn how to develop your own awesome WordPress plugins, this course is for you. You can check it out at »

And, if you want to learn how to secure your WordPress site, check out my other video course on Developing Secure WordPress Sites »

WordPress Core JavaScript Framework Selection Discussion Continues with Input from Open Source Community Leaders

WordPress’ #core-js Slack channel hosted a lively and productive meeting this morning led by Andrew Duthie. The discussion focused less on specific framework comparisons and more on the role a framework will play in building JavaScript-powered interfaces for WordPress. Contributors were joined by core developers and leaders from the React and Vue communities, Chrome engineers, and other interested parties from outside the WordPress community.

“This chat will focus largely on identifying requirements in building core features, overlap with plugin and theme authors, and patterns to reducing framework lock-in,” Duthie said. “Ideally this is higher-level than simply debating the merits of specific frameworks in a vacuum, and should be seen as an opportunity to collaborate between projects to set a path forward for WordPress which will provide flexibility and resiliency to future churn.”

Duthie began by asking what role a framework should play in a WordPress developer’s workflow and also asked framework contributors to offer their perspectives on recommendations for extendable interfaces. This question provided attendees with the opportunity to weigh in on topics such as support for web components, framework-agnostic block interoperability for Gutenberg, and how this might affect WordPress’ plugin ecosystem.

“I disagree a bit with the idea that whatever core (in this case Gutenberg) uses to power some of the intricacies of building a stateful app is going to be the de facto standard for plugin development,” Gutenberg engineer Matías Ventura said. “The actual framework here, in general terms, is going to be what WordPress exposes and the APIs.”

With a framework-agnostic approach to building Gutenblocks, the library that core decides to build on doesn’t have to become the de facto standard for plugin developers but many outside the Gutenberg team believe that it will inevitably end up that way in practice. There are entire teams of engineers waiting on this decision that are committed to adopt whichever framework WordPress bets on.

“To provide some perspective on how WP’s decision on a framework impacts developers downstream, I’m a developer at Boston University and our plan is to focus on whichever framework WP decides upon, even if Gutenberg has a completely agnostic API,” Adam Pieniazek said. “We’re primarily a WP shop (~ 1,000 site WP install powers most/a lot of our public web presence) and end up creating huge customizations on top of WP that often require diving into core to see what is actually happening in the background. I like Vue more than React personally, but if WP decides upon React, BU will focus on building expertise in React for when we need to peek/debug beyond the API. It doesn’t mean we won’t also use Vue but it won’t be our primary focus.”

Pieniazek feedback echoes that of Gravity Forms co-founder Carl Hancock, who said his team is ready to adopt whatever library WordPress selects.

“People are going to end up adopting whatever core uses for the most part despite the rainbows and butterflies some are claiming as it relates to creating an abstraction layer so plugin/theme developers can use whatever they want,” Hancock said in the #core-js channel earlier this week.

Many participants from outside the WordPress community seemed to be in agreement with a framework-agnostic approach and none were eager to force a single framework on all developers working with WordPress. The remaining concern is how this works out practically and whether it puts developers in the confusing position of using a framework on top of a framework.

“Since Gutenberg itself is going to become a platform to build for, the best level of separation is if the framework is used to build the core, but isn’t exposed as API to block builders,” AMP engineer Paul Bakaus said. “This gives one the choice to replace the underlying foundation whenever necessary.”

Gutenberg engineer Riad Benguella summarized the approach the team has been discussing:

I think what we try to communicate is something like:

– WordPress Core is going to use this X framework internally
– If you want to use it, we think it’s good
– If you want to usee something else, you can just as easily as you’d use the Core’s chosen framework

Benguella also said that one of the goals for Gutenberg is “to set the basis for how we extend WordPress’ UI in the future.” Once it ships, the team will likely set its sights on other parts of the wp-admin and build them in the same way.

“If all parts of WP’s UI can be extended via a standard interface, whether it be a simple ‘data down, events up’ API, or expecting a WC, I think this would cleanly separate the concerns of ‘what framework to use for core’ vs. ‘what framework to use for extension development,'” Vue.js creator Evan You said.

When asked for his thoughts on on React becoming a primary framework for WordPress, React maintainer Dan Abromov was hesitant to advocate for WordPress adopting the library. His response underscored the necessity of having a framework-agnostic approach for extending Gutenberg and future WP interface overhauls.

“I don’t really know WordPress well, so it’s hard for me to say whether it’s a great fit for the use case or not,” Abramov said. “Generally we use React for highly interactive UIs and find that it scales well with the app size. I’m also happy to answer technical questions about it. But I think in general people have strong opinions about, for example, templating vs expressiveness, and I don’t feel like forcing React upon everyone is the best way.”

“I also feel the same way,” Evan You said. “Forcing a single framework on everyone, regardless of which one, is IMO not a good idea because it is bound to alienate the group of devs who are not into that framework, and imposes a bigger long term stability risk.”

Abramov also said that people are already “very bitter and divisive” about the subject of selecting a framework. He also tweeted a similar sentiment prior to the meeting.

“I believe it’s important (and technically feasible) to separate ‘which framework to use for core’ and ‘which framework community devs use for extensions,'” Evan You said.

“Yes, I think there’s a goal here to be unopinionated for what we’re exposing to plugin authors, so long as the APIs/interfaces we do expose are sufficiently flexible (and easy) to build the UIs and interactions they need to implement,” Andrew Duthie said.

The topic of supporting web components interoperability for Gutenblocks was also part of the discussion during the meeting.

“While less powerful than most of the actual frameworks at this point, they are likely to become a W3C standard, ensuring that they will stick around and evolve,” Felix Arntz said. “Plus once browser support is fully there, there’s less functionality to implement by an actual framework built on top.”

Polymer.js representative Justin Fagnani said he disagreed that they are “less powerful” and noted that web components already are a W3C standard.

“I think WP is also uniquely positioned to help drive forward support for web components natively everywhere,” EventEspresso core dev Darren Ethier said. “Pretty much all the frameworks have the ability to work with the web component spec now. It’s just a matter of proper implementation.”

Several participants referenced, a site that displays popular JS frameworks’ progress on communicating Custom Elements in a way that promotes interoperability. Matías Ventura asked React and Vue core devs how web components (and their future) fit into each framework at the moment.

“In React, we have some web component support but haven’t made it a large priority since use cases have seemed slim in the past, especially since adding Web Components hasn’t made a lot of sense in a first-party application where you control the whole stack – but we do have some support for them nonetheless and I’m happy to entertain adding more, either now or in the future,” Sophie Alpert said.

“On the high level I think frameworks like React/Vue provide what is not really addressed in web components: efficient and declarative DOM updates reacting to state changes,” Evan You said. “This is also why Polymer exists on top of WC. I have always acknowledged the value of WC as an interop interface.”

Overall, attendees at the meeting were respectful, collaborative, and eager to contribute their expertise to help WordPress contributors find the best way forward in the framework selection process. The discussion will continue at next week’s meeting and likely in the comments of a forthcoming Make/Core post summarizing the meeting.

How to Fix Password Reset Key Error in WordPress

Are you seeing ‘Could not save password reset key to database’ error in WordPress? This error usually occurs when you are trying to login into your WordPress site. It effectively locks you out of your own WordPress site. In this article, we will show you how to fix the password reset key error in WordPress.

Fixing Could not save password reset key to database error in WordPress

Why Does the “WordPress Could Not Save Password Reset Key” Error Occurs?

The first sign of this error is that you will be unable to login to your WordPress site. It will simply keep refreshing the login page.

Now if you try to reset the password, then you will see an error message ‘Could not save password reset key to database’.

Could not reset password recovery key error

If you are not seeing this error message, then your login failure may be caused by other issues. In that case, head over to our guide on how to fix WordPress login page refreshing and redirecting issue.

This particular error message indicates that WordPress is unable to write new information into WordPress database. This is caused when your WordPress hosting account has used all the disk space allocated to your account.

Your WordPress database size is also part of the disk space allocated for your user account. Since you have already used the space, you will be unable to add any more data.

Fixing WordPress Could Not Save Password Reset Key Error

To fix this error, you need to simply connect to your website using a FTP client or File Manager in cPanel.

Next, go to your /wp-content/uploads/ folder and delete a few large image files to free up some space. Make sure to download those files to your computer as a backup before deleting them.

Delete files to free up some space

After that, you can visit your WordPress website and try to login again.

Once logged in, you can review your WordPress files and see if there are any files that are unnecessary and taking too much space. Usually these files are stored in /wp-content/ or /wp-content/uploads/ folder.

Many WordPress users have their cache plugins setup in a way that stops them from purging cached files. Overtime these files can eat up disk space allocated to your WordPress hosting account.

Another common culprit could be your WordPress backup plugins. If you are storing WordPress backup files on your server, then all stored backups are taking up unnecessary space on your hosting account. You should always store your WordPress backup files on a third party cloud storage service like Google Drive or Dropbox.

If you can’t clear anymore space, then it might be time to upgrade to a VPS hosting or even a managed WordPress hosting account.

We hope this article helped you learn how to fix could not save password reset key to database error in WordPress. You may also want to see our list of the most common WordPress errors and how to fix them.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Fix Password Reset Key Error in WordPress appeared first on WPBeginner.

Managing access to Yoast SEO with SEO roles

With the release of Yoast SEO 5.5 comes a great new feature: SEO roles. A site admin can now determine in the backend of WordPress who gets access to the various settings and features of Yoast SEO. This makes for a more fluid and flexible access protocol for different kinds of users on a site. It is no longer a one-size-fits-all solution, but a more tailored one. SEO roles make Yoast SEO even more powerful for every type of user. Here, we’ll explain why these roles are so awesome.

Optimize your site for search & social media and keep it optimized with Yoast SEO Premium »

Yoast SEO: the #1 WordPress SEO plugin Info

Managing user roles in Yoast SEO 5.5

It’s always been a challenge to use Yoast SEO in a larger site environment. As an admin, you’d have to choose between offering users full access to the plugin or just access to the SEO post editor part. That means a regular user couldn’t use the redirects manager, for instance, and had to ask an admin for help every time he or she wanted to add, change or delete redirects. We’ve seen it happing here at Yoast as well. Of course, there’s a whole range of possible permissions in between. Yoast SEO now introduces two new roles that make this a lot easier to manage: the SEO manager and SEO editor, in addition to the admin who determines who gets to see what.

Roles and capabilities

Roles in Yoast SEO consist of one or more capabilities, like:

  • managing options (this gives you full access),
  • managing redirects,
  • editing advanced metadata,
  • access to the bulk editor.

The SEO editor, for instance, can now make redirects, but cannot change the settings of the plugin or access the advanced metadata editor of Yoast SEO. This way, the SEO editor has more access than a regular user, but less than the SEO manager who can manage settings as well. If you use a permission or role manager plugin for WordPress like Justin Tadlock’s excellent Members plugin, you get even more fine-grained control over the capabilities within Yoast SEO. This way, you can mix and match capabilities in any form you’d like.

In Yoast SEO Premium, we’ve also added the capability to manage redirects without having to be an administrator. By activating this, users within a specific role get full access to the redirects manager. No longer do site managers have to be swamped with redirects requests by site editors, they can manage those themselves. Personally, I like that a lot. By adding some magic code to the plugin, the redirects manager now shows up in the WordPress sidebar menu, even if your Yoast SEO menu is hidden by default. How cool is that?

yoast seo 5.5 filter

Managing your site has never been easier

The SEO roles in Yoast SEO make it incredibly easy to give more people working on your site access to the features and settings they need, without granting them full access. Does your site editor need to edit advanced metadata? No? Block it in Yoast SEO. Does he or she need to manage redirects and do large-scale SEO optimizations with the bulk editor? Great, grant him or her access to these parts of the plugin. You can do this and more – all from the admin dashboard of Yoast SEO!

Read more: ‘Yoast SEO 5.5: Introducing SEO roles’ »

The post Managing access to Yoast SEO with SEO roles appeared first on Yoast.

Facebook to Re-license React after Backlash from Open Source Community

Facebook has announced its intentions to re-license React, Jest, Flow, and Immutable.js under the MIT license. React community members began rallying around a petition to re-license React after the Apache Software Foundation (ASF) added Facebook’s BSD+Patents license to its Category X list of disallowed licenses for Apache PMC members. Facebook’s engineering directors officially denied the request in mid-August, citing the burden of meritless patent litigation as the reason for keeping the patents clause.

Facebook moved forward on this decision in full recognition that it might lose some React community members as a consequence. Many open source project maintainers began to look for alternatives. In a surprising move, Matt Mullenweg announced that WordPress would also be parting ways with React and planned to remove it from the upcoming Gutenberg editor.

Mullenweg’s decision to drop React from consideration for WordPress was likely an influential factor in Facebook’s eventual about-face on the topic of re-licensing the project. Facebook’s announcement on Friday acknowledges that the company failed to convince the open source community of the benefits of its BSD + Patents license:

We’re relicensing these projects because React is the foundation of a broad ecosystem of open source software for the web, and we don’t want to hold back forward progress for nontechnical reasons.

This decision comes after several weeks of disappointment and uncertainty for our community. Although we still believe our BSD + Patents license provides some benefits to users of our projects, we acknowledge that we failed to decisively convince this community.

The React 16 release, slated for this week, will ship with the updated MIT license. Facebook declined to respond to our request for further comment and said their post is the only public statement they will be providing.

It’s not yet clear whether WordPress will continue on with React, picking up where the team left off on Gutenberg, or shift to another library. Core contributors had originally decided on React while attending WordPress’ community summit in Paris last June, although this decision had not yet been made public when the greater open source community started petitioning Facebook to re-license React.

“I’m just so tired of this drama,” Gutenberg engineer Riad Benguella said. “We spent days and days thinking about the best framework for WP, and this change will just add more thinking, complexity, and uncertainty to our decision. I’m just tired of all this…we all have to rethink everything.”

Mullenweg, who had previously penned a several-thousand word unpublished announcement about how WordPress would be adopting React, did not confirm whether WordPress is still examining other libraries.

“Our decision to move away from React, based on their previous stance, has sparked a lot of interesting discussions in the WordPress world,” Mullenweg said in a post published to his blog this weekend. “Particularly with Gutenberg there may be an approach that allows developers to write Gutenberg blocks (Gutenblocks) in the library of their choice including Preact, Polymer, or Vue, and now React could be an officially-supported option as well.”

The regularly scheduled core JavaScript meeting is set for Tuesday, September 26 at 15:00 GMT and contributors plan to discuss the role a JS framework will play in current and future core focuses. The time has been changed to be two hours later than originally planned in an effort to accommodate more contributors across various timezones.

Scott Bolinger Shares Unique Perspective of WordPress From Outside the Bubble

Scott Bolinger, a product developer focused on the WordPress space who has created several products, including AppPresser and Holler Box, recently attended Content and Commerce Summit 2017.

This conference focuses on what’s working in eCommerce, digital media, information publishing, and subscription commerce. According to Bolinger, WordPress and WooCommerce were not topics of discussion.

“It really opened my eyes going to an event where no one even said the word WordPress once,” Bolinger said. “The audience at this conference was non-technical, mostly marketers selling stuff online. I watched a presentation where the presenter had slides with 20+ different recommended tools on them, and not a single mention of WordPress.

“This is an eCommerce conference, WooCommerce is 41% of all eCommerce stores, and not a single person said the word WooCommerce. All I heard about was Shopify and Amazon.”

According to SimilarTech, WooCommerce is leading in the top 100K sites, top 1M sites, and the entire web while Shopify is leading in the top 10K sites. While Shopify has a lot less market share, it’s used on substantially higher trafficked sites.

Bolinger shared the perspective of a friend who uses Shopify to sell clothing and will gross more than $1M in revenue this year. According to his friend, Shopify is easy to use, from setting up a theme, to the plugin/app ecosystem to add functionality.

“When my friend said Shopify is easy to use, this is a whole different category of great user experience,” Bolinger said. “This is building a site from scratch for a completely non-technical user, and them loving the end result and the experience.”

Bolinger raised an interesting point in that, Wix, Shopify, and SquareSpace are closed, SaaS offerings where they can control the user experience from end-to-end. This is impossible to do with WordPress because there are too many moving parts and core can not control how plugins and themes take part in that experience.

While WordPress core can’t necessarily solve the problem, it hasn’t stopped webhosts from trying. GoDaddyBluehost, and others have created onboarding solutions that try to control the end-to-end user experience.

Bolinger shared a sentiment that many in the WordPress community have advocated in recent years. “If we’re honest, the strength of WordPress is not that it’s easy to use for non-technical people. It’s an open-source platform that is easy for developers to extend and customize for clients.”

There was a time, somewhere between WordPress 2.3 and WordPress 3.5, where one of the main reasons people used WordPress was because it was easy. Between then and now, what caused WordPress to lose its ease-of-use factor?

SquareSpace, Wix, and Shopify didn’t exist in the early days of WordPress, they were late to market. This gave them the advantage of implementing all the lessons learned through WordPress’ lifespan and since it’s a closed system, they can iterate rapidly.

The biggest reality check that Bolinger shares is that there are a lot of people WordPress simply doesn’t cater too.

“There is a large contingent of people who just want to get stuff done, they don’t want to fuss with the tech”, He said. “They don’t care about open source or owning their data. They don’t want to install a theme and setup their widgets, or search thousands of results to find the best SEO plugin.

“They don’t want to set up ‘managed hosting’, an SSL certificate, or a payment gateway. They just want to sell their products and make money as fast and easily as possible.”

I encourage you to read the full post as it provides a perspective of WordPress not often shared within the WordPress bubble. How does WordPress become a platform that delivers the kind of experience from end-to-end that Bolinger’s friend describes?