Handling Bad Reviews

In general, the Plugin Review team is not the go-to recourse for bad reviews.  Instead, we have a totally brilliant forum support team! There’s some overlap of jurisdiction of course, and some of us are on both teams, but the point here is you should go to the right group to get the right help.

I’m also going to put this out there. You will get a bad review. Most of the time, it will not be deleted. So before you get any further in this post, know that the way you chose to respond, in public, to a 1-star review of your plugin is your own choice.

Our goal with the WordPress.org repository is to have a good place for users to get plugins that fulfill their needs. The reviews are an extension of that, and should viewed as a way for users to educate other users on their experiences. Also a review is about an experience. If someone’s experience with your product is poor, that doesn’t make their review invalid. And to go back to that previous statement, the way you react to those poor experiences is going to impact your reputation, and that of your plugin, a heck of a lot more than that review.

Now, that said, we have a few ‘common’ types of problems with reviews. This post is going to help you handle them and explain when you should call for help, as well as from whom. Later on we’ll be adding it to our documentation, once it’s refined as best we can make it. Please remember, we do not want to make a ‘rule’ for everything. That just invites people to play rules-lawyers and tip over everyone’s cornflakes.

Here’s how you do it and when and why.

First off… How to add a tag!

99.999999% of the time, you’re going to be adding ‘tags’ to posts. This is so easy, you may kick yourself for missing it. On a post, look on the right hand side, under About this Topic and you’ll see a section for Tags

Tags are listed on the right hand side of a post

This is a free-form field where you can add any tag you want. Anyone can add any tag. The forum moderators have an easy way to know who added what, though, so keep in mind we do monitor that. If you want to add a tag to a post and reply, add the tag, press the Add button, and THEN come back to reply. It works better.

Tag abuse (that is calling moderators needlessly) is not okay. Be smart. Be thoughtful. Remember that every last member of the forum and plugin teams is a volunteer. We’re not being paid by Automattic to do this.

The spam review

This is easy. Don’t reply, just add the tag modlook to the post and walk away. The forum team will delete it. If you think it may not be obvious spam, add the tag spam as well.

The sockpuppet review

When a person (or group of persons) makes multiple accounts with the sole intention of leaving reviews on their own plugins (or leaving poor reviews on their competitors), this is called being a Sock Puppet.

This behavior is expressly NOT welcome on the WordPress Forums as it is spamming. But it comes in two flavors:

  1. Someone 5-star spamming their own plugin
  2. Someone 1-star spamming their competition

Both are bad behavior. Both will get plugins removed from the repository and a stern email from us. If you’re doing this, stop right away. Contact your team and tell them ‘Don’t do this!’ Also keep in mind, asking everyone in your company to 5-star review your own plugins is gauche. I mean, really. You’re stacking the deck on purpose and that’s not beneficial to anyone.

Again, do not reply! Add the tag modlook AND sockpuppet to the post and walk away.

The attack/troll review

These are the worst. When someone attacks you and the review seems like all it exists for is to make you feel terrible, you’re going to have to take a deep breath and walk away. An attack is a troll, regardless of how the original poster (OP) feels, they’ve basically been a troll. They’re writing something they know will make you mad and hurt and angry, and they’re doing it on purpose. That’s a troll. And you shouldn’t feed the trolls. You won’t win, and you’ll just make yourself look bad.

Again, do not reply! Add the tag modlook to the post and walk away. These are usually pretty self evident after all.

The review that should have been a support post

This includes the sub-genre “People who submit 1-star reviews in order to emotionally blackmail you for support.”

We all get them.

  1. Reply with a link to the support section of your plugin (or directions on how to get support, or even a note that you don’t provide free support) and remind them that next time, they should ask for help before reviewing.
  2. See if you can fix the problem, but give it no more or less priority than you would any other support request.
  3. If you can solve it, ask them to modify their review. If they go back to https://wordpress.org/support/view/plugin-reviews/PLUGINNAME and scroll to the bottom, they can edit their reviews!

You’ll notice we’re not telling you to tag the post? Right now we can’t move a review into the support forums and vice versa, so there’s really no point. The forum moderators won’t do anything about it except say “Well, that does suck.” If we could move them, we would, but right now we technically don’t have that ability.

The review about your premium/pro version

If you upsell your plugin’s pro version in the free one, and someone leaves a bad review because the pro version they bought, on the basis of your free one, is bad, congratulations. The review stays. You opened the door with your upsell, encouraging them to do this, and that experience reflects on your plugin as a whole.

If you do not upsell, and there’s no direct link between the free and pro version, or the plugin having the issue is a premium only add-on, tag it modlook and someone will come take a look.

The review about someone else’s plugin

This one can be fixed! Reply and let them know it’s not your plugin, it’s the other one, and then tag it modlook and then use the tag wrongplugin (all one word) to let the mods know what’s going on.

But I really need a plugin moderator!

Okay. So you think you’re an exception? Use the tag pluginmod and a plugin admin will come take a look. Be prepared, though, as we generally will perform a full review on your plugin and any and all guideline violations will result in your plugin being removed until you fix them. Including using too many tags.

How to Show Confirm Navigation Popup for Forms in WordPress

Accidentally closing a page without submitting your comment or with a half filled form is annoying. Recently, one of our users asked us if it was possible to show their readers a confirm navigation popup? This tiny little popup alert users and prevent them from accidentally leaving half filled and unsubmitted form. In this article, we will show you how to show confirm navigation popup for WordPress forms.

Confirm navigation popup when user leaves a form unsubmitted

What is Confirm Navigation Popup?

Let’s suppose a user is writing a comment on your blog. They have already written quite a few lines, but they get distracted and forget to submit comment. Now if they closed their browser, then the comment will be lost.

The confirm navigation popup gives them a chance to finish their comment.

You can see this feature in action in the WordPress post editor screen. If you have unsaved changes, and you try to leave the page or close the browser, then you will see a warning popup.

Unsaved changes warning popup in WordPress post editor

Let’s see how we can add this warning feature to WordPress comments and other forms on your site.

Show Confirm Navigation popup for Unsubmitted Forms in WordPress

For this tutorial, we will be creating a custom plugin, but don’t worry you can also download the plugin at the end of this tutorial to install on your website.

However, for better understanding of the code, we will ask that you try to create your own plugin. You can do this on a local install or a staging site first.

Let’s get started.

First you need to create a new folder on your computer and name it confirm-leaving. Inside the confirm-leaving folder, you need to create another folder and name it js.

Now open a plain text editor like Notepad and create a new file. Inside, simply paste the following code:

 * Confirm Leaving 
 * Plugin Name: Confirm Leaving
 * Plugin URI:  https://www.wpbeginner.com
 * Description: This plugin shows a warning to users when try they forget to hit submit button on a comment form. 
 * Version:     1.0.0
 * Author:      WPBeginner
 * Author URI:  https://www.wpbeginner.com
 * License:     GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
function wpb_confirm_leaving_js() { 

     wp_enqueue_script( 'Confirm Leaving', plugins_url( 'js/confirm-leaving.js', __FILE__ ), array('jquery'), '1.0.0', true );
add_action('wp_enqueue_scripts', 'wpb_confirm_leaving_js'); 

This php function simply adds a JavaScript file to the front-end of your website.

Go ahead and save this file as confirm-leaving.php inside the main confirm-leaving folder.

Now we need to create the JavaScript file that this plugin is loading.

Create a new file and paste this code inside it:

jQuery(document).ready(function($) { 

$(document).ready(function() {
    needToConfirm = false; 
    window.onbeforeunload = askConfirm;

function askConfirm() {
    if (needToConfirm) {
        // Put your custom message here 
        return "Your unsaved data will be lost."; 
$("#commentform").change(function() {
    needToConfirm = true;


This JavaScript code detects if user has unsaved changes in comment form. If a user tries to navigate away from the page or close the window, it will show a warning popup.

You need to save this file as confirm-leaving.js inside the js folder.

After saving both files, this is what your folder structure should look like:

Plugin file structure

Now you need to connect to your WordPress site using an FTP client. See our guide on how to use FTP to upload WordPress files.

Once connected, you need to upload confirm-leaving folder to /wp-contents/plugins/ folder on your website.

Uploading plugin files to your WordPress site

After that you need to login to the WordPress admin area and visit Plugins page. Locate the ‘Confirm Leaving’ plugin in the list of installed plugins and click on ‘activate’ link below it.

Activate plugin

That’s all. You can now visit any post on your website, write some text in any field of the comment form and then try leaving the page without submitting. A popup would appear, warning you that you are about to leave a page with unsaved changes.

popup notification warning user about unsaved changes

Adding The Warning to Other Forms in WordPress

You can use the same code base to target any forms on your WordPress site. Here we will show you an example of using it to target a contact form.

In this example, we are using the WPForms plugin to create a contact form. The instructions will be the same if you are using a different contact form plugin on your website.

Go to the page where you have added your contact form. Take the mouse over to the first field in your contact form, right click, and then select Inspect from the browser menu.

Finding form ID

Locate the line that starts with the <form> tag. In the form tag, you will find the ID attribute.

In this example, our form’s ID is wpforms-form-170. You need to copy the ID attribute.

Now edit the confirm-leaving.js file and add the ID attribute after #commentform.

Make sure you separate #commentform and your form’s ID with a comma. You will also need to add # sign as prefix to your form’s ID attribute.

Your code will now look like this:

jQuery(document).ready(function($) { 

$(document).ready(function() {
    needToConfirm = false; 
    window.onbeforeunload = askConfirm;

function askConfirm() {
    if (needToConfirm) {
        // Put your custom message here 
        return "Your unsaved data will be lost."; 

$("#commentform,#wpforms-form-170").change(function() {
    needToConfirm = true;


Save your changes and upload the file back to your website.

Now you can enter any text into any field of your contact form and then try to leave the page without submitting the form. A popup will appear with a warning that you have unsaved changes.

You can download the confirm-leaving plugin here. It only targets the comment form, but feel free to edit the plugin to target other forms.

That’s all, we hope this article helped you show confirm navigation popup for WordPress forms. You may also want to try your hands on these 8 best jQuery tutorials for WordPress 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 Show Confirm Navigation Popup for Forms in WordPress appeared first on WPBeginner.

What the Queries

I’ve never been a fan of IDEs, complex debugging tools with breakpoints, variable watch lists and all that fancy stuff. var_dump() and print_r() have always been my best friends.

Recently I was playing around with the caching arguments in WP_Query, trying to combine that with update_meta_cache() while sticking wp_suspend_cache_addition() somewhere there in the middle, and it quickly became a mess, so I wanted to know what queries am I actually running under the hood.

I came up with this little piece, which I think I’ll use more often from now on:

// Assuming SAVEQUERIES in set to true.
$GLOBALS['wpdb']->queries = array();

// All the magic goes here

var_dump( $GLOBALS['wpdb']->queries );

This gives you a nice list of SQL queries that were triggered only by that magic code in between. Works great when you need a quick sanity check on all those caching arguments, priming meta or term caches, splitting queries and whatnot.

Obviously it empties the initial set of queries, so anything in Debug Bar, Query Monitor, etc. will no longer be accurate.

What’s your favorite way to keep track of queries?

Click here to comment

More from Konstantin Kovshenin

How to use the content analysis of Yoast SEO

The Content Analysis Tool in the Yoast SEO plugin measures many aspects of the text you’re writing. These checks run real-time, so you’ll receive feedback while writing! The content analysis helps you to make your text SEO-friendly. In this post, I’ll first describe the most important features of the Content Analysis Tool. After that, I’ll explain how to use and interpret these features.

Yoast SEO content analysis

Most important features

1.  The plugin allows you to formulate a meta description. This description has to be a short text describing the main topic of the page. If the meta description contains the search term people use, the exact text will be shown by Google below your URL in the search results.

2.  The plugin analyzes the text you write. It calculates the Flesch reading-ease score, which indicates the readability of your article. The Flesch reading-ease score takes into account sentence length, for example. In the future, we’ll add more checks on readability. This will allow you to check the SEO and readability of your text simultaneously.

3. The plugin does numerous content checks on your page. It checks whether you use your focus keyword in:

The plugin also checks the presence of links and images in the article. It calculates the number of words and the density of usage of the focus keyword in the article. Moreover, the plugin checks whether you’re using the same focus keyword on other pages of your website. This should prevent you from competing with yourself.

If you write a relatively SEO-friendly text (based on the aspects mentioned above) the plugin will indicate this with a green bullet. Writing pages that are rewarded with green bullets will help you improve the ranking of those pages.

Two warnings before you start!

When you optimize your post for a certain keyword, keep two things in mind:

  • The first thing is that in this phase (the final, optimizing phase) you shouldn’t change any major things in your article. If you’ve put effort into writing an attractive, structured and readable text, the optimization process should in no way jeopardize that.
  • The second thing is that you shouldn’t change your keyword strategy in this phase. If you’ve done your keyword research properly and you’ve written your post or your article with a focus keyword in mind, don’t go change your focus keyword now! Read The temptation of the green bullet for more in-depth information about that.

7 simple steps to optimize your text

Step 1: Put your text in the WordPress backend

Distraction free writing

WordPress has a distraction-free writing mode that enables you to write in the WordPress backend without being distracted by the menu, the toolbar, the categories box, etc.Distraction free writing mode

You’ve written your article or your blog post. You can write directly in the backend of WordPress or write in any kind of text editor and copy your text into the WordPress backend. Do whatever you like!
If you choose to copy your text in the WordPress backend, copy without the layout. You should adapt the layout in the backend, as otherwise you might run into some layout problems. Make sure to set subheadings into heading 2, sub-subheadings to heading 3 and so on. Then put the title of your post in the title box.

Step 2: Enter your focus keyword

Scroll down to the Content Analysis Tool in the WordPress backend. Enter your focus keyword in the appropriate field of the Yoast SEO Metabox. Your focus keyword is the keyword you would like your post to rank for. Ideally, this should be a keyword which emerged from your keyword research and which you have kept in mind during the entire writing process.

Read more: ‘How to choose the perfect focus keyword’ »

Snippet editor in Yoast SEO

Yoast SEO premium offers the possibility to optimize one article for more than one focus keyword. Optimizing your post for more than one search term allows you to rank for more keywords and to gain traffic to your site through more keywords.

Step 3: Write a meta description

Enter the meta description of your post. Describe clearly what your post or article is about. And make sure you use the exact phrase of your focus keyword. The meta description will be shown by Google below the URL if people search for your focus keyword.

The meta description in the Yoast SEO content analysis

It’s important that the meta description contains the focus keyword. Not because it will improve your rankings, but because otherwise Google usually won’t show your meta description in the search results. Google will try to match the search query with the description. If the focus keyword isn’t mentioned in the meta description, Google will just grab a random piece of content from your page containing the keyword.

The meta description shouldn’t be too long. On the other hand, there’s no ‘penalty’ for having too long meta descriptions either. What you should pay attention to is: 1. the logical bits of it are of the right length and, 2. when it’s cut in half, it still makes sense and still entices people to click.

Keep reading: ‘How to create the right meta description’ »

Step 4: Fine-tune your headings

Look critically at your title, the headings and subheadings of your article. Do these contain your focus keyword? If not, can you alter them (without changing the structure or content of your article) in such a way that they will contain your focus keyword? Don’t put your focus keyword in all of your headings though! That is too much. Using your focus keyword in one heading and in your title should be enough. You can read more about headings in one of Michiel’s posts.

Step 5: Fine-tune your body text

You should also mention the focus keyword in your text a couple of times. Make sure to mention it in the first paragraph. Throughout the text, you should mention it again. As a general rule of thumb: try to use your search terms in about 1 to 2 percent of your text. Say your article has 300 words, that means you should mention your search terms 3 to 6 times. 300 words isn’t the exact goal, nor is the amount of keyword mentions. However, 300 is a decent minimum for the number of words of an article that needs to show authority.

Step 6: Check your bullets!

Clicking on the Content Analysis tab will allow you to see which aspects of the search engine optimization process were successful. The green bullets show which aspects are good. Orange and red bullets indicate where you can improve your SEO strategy. You don’t have to keep on optimizing until all of the bullets are green. Posts on Yoast.com, often have a few orange bullets and sometimes even one or two red bullets. The important thing is that the overall bullet (the one on the upper right in the backend of your post) should be green. The overall bullet will become green if the majority of your SEO aspects are covered.

Overall SEO score in the publish box

Overall SEO score in the publish box


Step 7: Fill out the Social data

The final step to take in the Yoast SEO meta box is filling the Social data. If you fill out a description or title for a social network on this tab, it’s shown in the metadata for the page. This means this description, title or image will be shown when the page is shared on the respective social network. These descriptions basically have the same requirement as the meta description (which is what they fall back to), but usually can be longer. They should tell people what to expect and why they should click.

Social previews

The preview screenshots on the left are taken from Yoast SEO Premium, in free, you won’t see those previews, just the fields!

Twitter preview  Facebook social preview

Read on: ‘10 tips for an awesome and SEO-friendly blog post’ »


Rewarding Vulnerability Finders

We don’t. We’re 100% volunteer driven, so when you tell us a plugin has a vulnerability, you don’t get anything more than a thank you and our undying affection. Yes, even if you’re that person who sent 45 reports one day.

But. If you’re a bigger than average plugin (say Derpack size) this isn’t a really great way to find out about vulnerabilities. You’d really like it people could report these securely and in a way that would make them inspired to help more. You know. Money.

Enter HackerOne – a free service.

Here’s how it works in a nutshell. You make an account and tell people what you’re looking for. For example, the WP API. Their profile explains the scope (WP 3.9 and up) and they list (with links) everything related.

If someone finds a security hole in the WP-API, they can log into the site and fill in a form explaining what the hack is, how to exploit it, and so on. The developers will review the report and, if they determines it’s valid, pay for the report.

Some pages list how much the payout is, some don’t.

You can search right now for ‘wordpress‘ in the directory and there are a handful of WP companies and individuals listed already. Hi, Automattic! Fancy seeing you here.

If you’re a WordPress plugin or theme company, this could be a great way to get the community in on helping you plug those security holes.

How to Disable Login Hints in WordPress Login Error Messages

Recently, one of our users asked us how they can disable login hints in WordPress. By default, WordPress show error messages when someone enters incorrect username or password on the login page. These error messages can be used as a hint to guess a username, user email address, or password. In this article, we will show you how to disable login hints in WordPress login error messages.

Hide login hints in WordPress

What Are Login Hints in WordPress Login Error Messages

During login, WordPress shows this error message when a user enters incorrect username

ERROR: Invalid username. Lost your password?

Invalid username error

If someone enters correct username with wrong password, then WordPress shows this message:

ERROR: The password you entered for the username johnsmith is incorrect. Lost your password?

Incorrect password

If someone is trying to guess your username, then this error message confirms that they have successfully guessed it.

Since WordPress 4.5, you can also login to your WordPress site using email address instead of username. These login hints can also confirm that you are using a particular email address for your admin account.

For most WordPress users this is probably not a big issue. But for people who are cautious about privacy and security, this could be a problematic thing.

For better security, you should always use unique usernames and strong passwords for your admin account. See our guide on the best way to manage passwords for WordPress beginners.

Having said that, let’s take a look at how to hide these login hints in WordPress login error messages.

Hiding Login Hints in WordPress

Simply add the following code to your theme’s functions.php file or a site-specific plugin.

function no_wordpress_errors(){
  return 'Something is wrong!';
add_filter( 'login_errors', 'no_wordpress_errors' );

This code adds your custom message as a filter to login errors. This will override default WordPress login errors.

Now if someone enters incorrect username, password, or email, WordPress would simply show the error ‘Something is wrong’ without giving any hints.

No login hints

While this code can hide login errors, it cannot save you from more sophisticated hacking attempts or brute force attacks.

We use Sucuri to protect all our websites against common security threats. Sucuri comes with a website firewall that can block any suspicious activity from reaching to your site. See how sucuri helped us block 450,000 WordPress attacks in 3 months

We hope this article helped you hide login hints from WordPress login error messages. You may also want to see these on 13 tips and hacks to protect your WordPress admin area.

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 Disable Login Hints in WordPress Login Error Messages appeared first on WPBeginner.

WordPress 4.5.1 Fixes 12 Bugs

WordPress 4.5.1 is available and addresses a dozen items reported against WordPress 4.5. According to Adam Silverstein, “a singular class issue that broke sites based on the Twenty Eleven theme, an incompatibility between certain Chrome versions and the visual editor, and an Imagick bug that could break media uploads,” are among the bugs fixed. A detailed list of changes can be viewed here.

WordPress 4.5.1 is already being pushed out to sites configured for auto updates. If you’d rather not wait or have auto updates disabled, you can browse to Dashboard – Updates and click the Update Now button. If you encounter an issue or believe you’ve discovered a bug, please post it in the troubleshooting section of the support forums.

WordPress robots.txt example for great SEO

robots meta tag ultimate guideThe robots.txt file is a very powerful file if you’re working on a site’s SEO. At the same time, it also has to be used with care. It allows you to deny search engines access to certain files and folders, but that’s very often not what you want to do. Over the years, especially Google changed a lot in how it crawls the web, so old best practices are no longer valid. This post explains what the new best practices are and why.

Google fully renders your site

No longer is Google the dumb little kid that just fetches your sites HTML and ignores your styling and JavaScript. It fetches everything and renders your pages completely. This means that when you deny Google access to your CSS or JavaScript files, it doesn’t like that at allThis post about Google Panda 4 shows an example of this.

The old best practices of having a robots.txt that blocks access to your wp-includes directory and your plugins directory are no longer valid. This is why, in WordPress 4.0, I opened the issue and wrote the patch to remove wp-includes/.* from the default WordPress robots.txt.

A lot of themes also use asynchronous JavaScript requests, so-called AJAX, to add content to the page. By default, WordPress used to block these. So I created the ticket for WordPress to allow Google to crawl the admin-ajax.php URL in wp-admin. This was fixed in WordPress 4.4.

Robots.txt denies links their value

Something else is very important to keep in mind. If you block a URL with your site’s robots.txt, search engines will not crawl those pages. This also means that they cannot distribute the link value pointing at those URLs. So if you have a section of your site that you’d rather not have showing in the search results, but does get a lot of links, don’t use the robots.txt file. Instead, use a robots meta tag with a value noindex, follow. This allows search engines to properly distribute the link value for those pages across your site.

Our WordPress robots.txt example

So, what should be in your WordPress robots.txt? Ours is very clean now. We no longer block anything! We don’t block our /wp-content/plugins/ directory, as plugins might output JavaScript or CSS that Google needs to render the page. We also do not block our /wp-includes/ directory, as the default JavaScripts that come with WordPress, which many themes use, come from these directories.

We also do not block our /wp-admin/ folder. The reason is simple: if you block it, but link to it somewhere by chance, people will still be able to do a simple [inurl:wp-admin] query in Google and find your site. This type of query is the type of query malicious hackers love to do. If you don’t do anything, WordPress has (by my doing) a robots meta x-http header on the admin pages that prevents search engines from showing these pages in the search results, a much cleaner solution.

What you should do with your robots.txt

You should log into Google Search Console and under Crawl → Fetch as Google, use the Fetch and Render option:

Fetch as Google in Google Search console, test your WordPress robots.txt

If it doesn’t look like what you’re seeing when you browse your site, or it throws errors or notices: fix them by removing the lines that block access to those URLs from your robots.txt file.

Should you link to your XML Sitemap from your robots.txt?

We’ve always felt linking to your XML sitemap from your robots.txt is a bit nonsense. You should be adding them manually to your Google and Bing Webmaster Tools and make sure you look at their feedback about your XML sitemap. This is the reason our Yoast SEO plugin doesn’t add it to your robots.txt. Don’t rely on them to find out about your XML sitemap through your robots.txt .

Read more: ‘Google Panda 4, and blocking your CSS & JS’ »

How to List Future Upcoming Scheduled Posts in WordPress

Recently, one of our users asked us how they can list scheduled or future upcoming posts in WordPress. Showing upcoming posts can be helpful in getting people to subscribe to your blog. In this article, we will show you how to display future upcoming posts in WordPress sidebar.

Show scheduled and future upcoming posts

What is Scheduled or Future Upcoming Posts in WordPress?

If you have been blogging for a while, then you have probably noticed that publishing posts on a certain time gets more people to read it. If you are new to blogging and don’t know what time you get the most visitors, then you should start using Google Analytics to track this information.

The problem is that you cannot just sit around and wait for that time to hit the publish button. That’s why WordPress comes with built-in scheduling feature. It allows you to schedule your posts to be published later.

Using scheduling you can focus on creating content and managing your editorial calendar like a pro.

Having said that, let’s see how you can show off your upcoming posts in WordPress and use it to get more subscribers.

Method 1: Showing Scheduled or Future Posts with Plugin

First thing you need to do is install and activate SOUP – Show off Upcoming Posts plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, you need to visit Appearance » Widgets page. There you will find ‘Upcoming Posts’ widget under the list of available widgets. Simply add the widget to your sidebar where you to display scheduled posts.

Upcoming posts widget

The widget settings allow you to choose the number of scheduled posts you want to show. You can also show dates next to them, link to your RSS feed, or link to a page where users can signup for your email list.

Click on the save button to store your widget settings.

You can now visit your website to see the widget in action.

Preview of upcoming posts in sidebar

Method 2: Showing Scheduled or Upcoming Posts Manually

Simply add this code to your theme’s functions.php file or a site-specific plugin.

function wpb_upcoming_posts() { 
	// The query to fetch future posts
	$the_query = new WP_Query(array( 
		'post_status' => 'future',
		'posts_per_page' => 3,
		'orderby' => 'date',
		'order' => 'ASC'

// The loop to display posts
if ( $the_query->have_posts() ) {
	echo '<ul>';
	while ( $the_query->have_posts() ) {
		$output .= '<li>' . get_the_title() .' ('.  get_the_time('d-M-Y') . ')</li>';
	echo '</ul>';

} else {
	// Show this when now future posts are found
	$output .= '<p>No posts planned yet.</p>';

// Reset post data

// Return output

return $output; 
// Add shortcode
add_shortcode('upcoming_posts', 'wpb_upcoming_posts'); 
// Enable shortcode execution inside text widgets
add_filter('widget_text', 'do_shortcode');

Now you can visit Appearance » Widgets page. Add a text widget to your sidebar where you want to display upcoming posts and add this shortcode inside the widget.


Adding upcoming posts shortcode in a text widget

Click on the save button to store your widget settings.

You can now visit your website to see the upcoming scheduled posts in your sidebar. You can also use this shortcode in a post, page, or a template in your child theme.

We hope this article helped you learn how to show scheduled posts in your WordPress sidebar. You may also want to see our list of these 25 most useful WordPress widgets for your site.

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 List Future Upcoming Scheduled Posts in WordPress appeared first on WPBeginner.

What WordPress.org Does with the Data it Collects from Users Sites

Freemius Featured Image
photo credit: data slide(license)

Since I started covering WordPress in 2009, one of the things I’ve noticed is that certain topics have a cyclical nature to them. One of these is the contention in the WordPress community on what data is sent, stored, and shared on WordPress.org. In a post published on Torquemag.io, Josh Pollock, Founder of CalderaWP, argues that WordPress is a community-driven project and as such, data collected by WordPress.org should be shared with the community.

If installing and updating themes via the WordPress dashboard wasn’t so easy, WordPress wouldn’t be what it is today. I understand and appreciate this.

Here’s the part that doesn’t sit well with me: WordPress.org is collecting data on all of its users (as it should), but this information isn’t available in aggregate form to the community.

Pollock says that as an entrepreneur, the information would help him make informed business decisions.

Data is Stored for Two Days

I spoke to Samuel ‘Otto’ Wood, who helps maintain WordPress.org, and discovered that some of the assumptions people have are not true.

“The data collection systems on w.org have been inconsistent at best, and re-written several times,” Wood said.

“But the general idea that there is some kind of treasure trove of information we’re storing is misguided, at best. The data is collected, aggregated for the things we display, then tossed. We don’t store it for any serious length of time. Just the results of the data like the counts.”

Gathering, sorting, and displaying the large amount of data associated with WordPress is a CPU intensive job. The most recent example of WordPress.org sharing aggregate data is for active installs of plugins and themes. Displaying the Active Install count is the result of significant performance improvements from WordPress lead developer Dion Hulse. Without the improvements, the data collection would have overloaded CPUs and MySQL databases.

“Gathering that data is frickin’ difficult to start with, “Wood said. “For the longest time, we didn’t even have the actual system resources to pull off the ‘Active Installs’ count. We didn’t display that count because we couldn’t do it. The idea that we’re hiding things is ludicrous.”

Raw data is stored for two days and is then overwritten, “basically, there’s too much data to store,” Wood said. “All of the data that w.org gathers is used to display the stats on w.org itself. Nothing special is hidden.”

Data Accuracy is Hard

If developers like Pollock are going to make business decisions using public data, the data has to be accurate. Accuracy is a complex problem but the team has slowly made progress over the years as legacy systems on W.org are phased out.

“A lot of the w.org systems are poorly made,” Wood said. “They’re old, have been modified dozens of times over the years, and badly in need of updating. For a long time, the data we gathered could not be processed fast enough so we simply threw over half of it away.

“Mostly, we phase out old useless systems and replace them with something better and newer which gives us things to display. Active Install counts was an entirely new system that replaced an older one which didn’t give any useful information.”

No Conspiracies Here

Wood confirms what I’ve believed to be true for a long time. WordPress.org is not storing data for an extended period of time and the information that is collected is on public display somewhere on the site. What types of data would you like to see on WordPress.org?

Yoast SEO: hidden features

There are many choices on how to optimize your site. When we develop our Yoast SEO plugin we don’t translate all these choices into settings. In fact, we try to make as few settings as possible! If we think something should always be on, it’s on. We call these features ‘hidden features’, because as a user you’re not necessarily aware of their existence. You might think we don’t have certain features, because there’s no setting for it. While in fact we just do it for you! In this post we’ll dig a little deeper into these hidden features.

First, you might want to check out this video! We’ll explain which hidden features we have, why we have them and how they help you optimize your site!


Canonicals were introduced 6 to 7 years ago as an answer to duplicate content issues. In a web shop, for instance, a product can be in 3 different categories. Therefore you can have 3 different urls with the exact same content. Or, in another case, you might have a url with a campaign tag and one without it, showing the same content.

You don’t want to confuse Google nor the user with these different urls. The solution for this is the rel=canonical link element. The canonical url lets you say: “Of all the options available for this url, this url is the one you should show”. You can do so by adding a rel=canonical tag on a page, pointing to the page that you’d actually like to rank.

Yoast SEO does this for you, everywhere on your site: single posts and pages; homepages; category archives; tag archives; date archives; author archives etc. If you’re not a technical person, we understand the canonical can be quite confusing. Or something you don’t really want to think about. So we don’t make you think about it! We add it by default and hide it.

Read more: ‘rel=canonical: the ultimate guide’ »

rel=next / rel=prev

Another hidden feature in Yoast SEO is rel=next / rel=prev . It’s a method of indicating paginated archives to search engines. This way a search engine knows certain pages are part of an archive. A rel=next/prev tag in the header of your site tells Google what the previous and the next page in that archive is. Nobody else than people looking at the source code of your site and search engines see this piece of code.

Keep reading: ‘rel=”next” & rel=”prev” for paginated archives’ »

Login & registration

Yoast SEO also tells search engines not to follow links for login and registration pages. If you have a WordPress blog, you probably have a login link, and a registration link on your site. That’s not something that’s very useful to search engines. A search engine would never have to be on your admin page. It will never need to register for your site. So Yoast SEO makes sure that search engines will never follow these links. It’s a tiny tweek, but it saves a lot of unneeded Google action.

Noindex search results

The last hidden feature is based on Google’s Webmaster Guidelines. Google says that you have to noindex your search results on your site. This prevents a user from going from a search result in Google to a search result on your site. Google considers that as a bad user experience. So we noindex these pages. This means that the links on these page can be followed and counted, but they will never show up in the search results.

WordPress 4.5.1 Expected Early Next Week

WordPress 4.5 “Coleman” was released last week without too many issues. However, the WordPress development team recently identified two bugs that are prompting an immediate point release scheduled for next week.

The first is that TinyMCE toolbars and tabs are unresponsive in Chrome Version 50.0.2661.75 beta-m (64-bit). The second is that page templates with widgets are styled incorrectly. WordPress 4.5 added a singular class that many themes use, including Twenty Eleven, that breaks a site’s layout. After a lengthy discussion and testing, the decision was to revert the change.

WordPress 4.5.1 RC 1 is available and the core team wants as many people as possible to test the TinyMCE update and other bug fixes included in the release. If you think you’ve discovered a bug, you’re encouraged to report it in the Alpha/Beta section of the support forums.

WordPress memcached 3.0.0

Some software is so stable that it becomes stagnant. Yesterday’s update of the WordPress object cache drop-in for memcached flings it from both categories, back into active development where it is sure to capture the attention of WordPress site administrators around the world.

So much for drama and spin. All that really happened was this: I pushed a major-version update that finally allows `wp_cache_flush()` to work for WordPress sites using memcached. You probably shouldn’t care at all; you had better click away to a video of a suburban father longboarding with a short-legged dog.

In case you do care, it can only be because you belong to the elite club of techies who administer a WordPress site with the help of memcached. Our records on this population are scarce. By one estimate–surely a miscalculation–there are fewer than ten installations of this software in the world. You may call it hubris but I suppose the number might stretch well into two-digit territory.

What you few need to know is this: upgrading to 3.0.0 will instantly flush your entire cache. This will happen because the key format has changed. I didn’t bother writing any code to gradually migrate keys, nor do I offer any other strategy mitigate this potentially catastrophic effect. You should be keen enough to handle it.

Beyond that, you can look forward to fewer problems along the lines of WordPress getting stuck in a database upgrade loop. This is when you’ve upgraded your database but WordPress keeps insisting that you haven’t, locking you out of wp-admin. That’s what happens when `wp_cache_flush()` has no effect. That’s just how it was for multisite installations because memcached’s own flushing mechanism was too blunt for such use.

How it works is not too hard to invent. Cache keys are automatically prefixed with a number that pseudo-uniquely represents the current “flush count” of either the current site or the global cache. Flushing is accomplished by incrementing that counter so that stale entries are hidden to subsequent accesses. The counters are stored in memcached so they exhibit the same performance characteristics as the cache entries they marshal.

2016 is not the first time we have tried this. Eight or so years ago, the same strategy was attempted on what was and is the world’s largest WordPress installation. Sensing trouble, we backed away from the high road and skirted the problem by inserting proprietary code in our copy of WordPress. If you’re the type that wants to dive into the gory details of these hacks, we have a special place for you.

We revisit the high road now because time has taught us to lean into trouble. We cherish our scars and we regret having sustained so few of them over the years. Second, we want future projects to hold tighter to the ethos of open source software and pushing improvements upstream for all to enjoy.

Like all versions of WordPress and this drop-in extension, 3.0.0 is free of charge. It will cost you one or two cache reads every time WordPress generates a page. If you find this expense immodest then I hope you will contact me about your use case.

I hope 3.0.0 proves stable enough to vanish back into obscurity. If it gives you trouble, come find me and we can make 3.0.1 together.

Thanks to Peter Westwood for reviewing the code and suggesting an improvement.

How to Find and Replace Text with One Click in your WordPress Database

Are you looking to do a mass search and replace in WordPress? Whether you want to find and replace a specific text, URL, or an image, you can easily do so by using a find and replace WordPress plugin or a simple SQL query. In this article, we will show you how to find and replace text in your WordPress database.

Find and replace text in WordPress database with just one click

When You May Need Find & Replace for WordPress Database?

Let’s suppose that you have added specific text or URL to a number of your posts. You don’t know which posts you have added that text to, but you do know that there are a lot of them.

Now you can manually search your site and edit every single post one by one. That’s going to take time and has a high chance of you missing some occurrences.

Using a single command to automatically find and replace will do the same thing but much quicker and efficiently.

There is one downside to it though. If you made a mistake, then you will not be able to undo it. Once you replace the text, it is gone. You will need to carefully type the text you are looking for and the text you want to replace it with.

Having said that, let’s see how you can easily find and replace text in your WordPress database.

Getting Started

As we mentioned earlier that the changes you make to your database will not be reversible. You need to take every precaution to make sure that you don’t lose data.

First you need to create a WordPress database backup. You can do that by using a WordPress backup plugin. Alternatively, you can also create a database backup using phpMyAdmin.

After creating the backup of your WordPress database, you can move on to run your find and replace commands.

Running Find and Replace with a WordPress plugin

If you are not familiar with code and don’t want to write a custom SQL query, then there is an easy to use find and replace WordPress plugin called Better Search Replace.

Better search replace plugin settings

It allows you to run search and replace commands from inside your WordPress admin area. We have a detailed guide on how to search and replace in WordPress with Better Search Replace plugin.

Running Find & Replace MySQL Query with phpMyAdmin

You can also use phpMyAdmin to find and replace text from your WordPress database.

First you need to login to cPanel dashboard of your WordPress hosting. Scroll down to the database section and then click on phpMyAdmin.


The screenshot above is showing the cPanel dashboard on BlueHost. Your cPanel dashboard may look slightly different.

This will launch phpMyAdmin where you will need to click on your WordPress database name and then click on SQL.

Running SQL query in phpMyAdmin

You will need to enter your SQL query in this format:

replace(FIELD_NAME, 'Text to find', 'text to replace with'); 

For example, if you wanted to search for text in a WordPress post’s content, then you would write your query like this:

update wp_posts set post_content =
replace(post_content,'Text to find','text to replace with');

Click on the ‘Go’ button to continue.

PhpMyAdmin will run your SQL query and upon success it will show the number of rows affected by the query.

You can now visit your WordPress site to see your changes in action.

We hope this article helped you learn how to find and replace text with one click in your WordPress database. You may also want to see our beginner’s guide on WordPress database management with phpMyAdmin.

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 Find and Replace Text with One Click in your WordPress Database appeared first on WPBeginner.

Yoast SEO 3.2

Today we’ve pushed out Yoast SEO 3.2. This release’s most notable feature is the addition of a help center to every settings page. You’ll remember we released tutorial videos a while back. These videos are now available right where you’d need them: on the tab that each video discusses. Other changes include accessibility improvements and tons of bug fixes. Last but not least, we have Social Previews in Yoast SEO Premium.

Accessibility changes

As you’ll have noticed we hired Andrea Fercia a while back. Andrea has been working hard on improving the accessibility of Yoast SEO. Some of the changes he’s made are visible and useful to everyone. Our new toggles were improved, as well as our inline help, which now looks like this:

Improved inline help functionality

Help center

We released our tutorial videos a few weeks ago. After that, we thought: how can we use these videos most effectively? The answer was rather simple: put the videos on the tab they talk about. The “most WordPress way” would have been to put them in the help tab. Unfortunately, nobody, ever, seems to be able to find that tab, so we’ve made it far more visible:

Screenshot of the new help center, a purple bar in the admin page with a help icon and the text "Help center"

When you click it, it expands and contains the video for that tab:

A screenshot of the help center in its expanded state, with a video explaining the features on the current tab.

Premium: Social previews

In Yoast SEO Premium, we added a cool new social previews feature. Much like the snippet preview it shows you what your post will look like when shared on Facebook and Twitter. If you don’t have premium yet, now might be a good time to get it!

Social Previews in Yoast SEO Premium

Removed functionality

We’ve removed the “hide” features we had, for hiding RSS feeds and a few other things. There simply is no real SEO benefit to these features. On top of that WordPress is adding more and different things to the <head> all the time and deleting them can lead to issues.


Google+ is dwindling, so we were already discussing its fate in our plugin. The Google+ metadata on posts was conflicting more and more with Facebook. Facebook was picking up Google+ images over Facebook OpenGraph images. These factors combined made us decide to remove the Google+ functionality from the plugin.

Under the hood

We’ve made a ton more changes under the hood this release. XML sitemaps received a lot of care, as well as the content analysis. We added some new features you might want to use in your theme with the yoast_get_primary_term() and yoast_get_primary_term_id() functions.


Eleven contributors outside of Yoast contributed to this release with patches. This brings the total number of contributors to the plugin to 112, a number we’re very proud of!

Go try it, and let us know in the comments what you think!

The Quest For a Centralized WordPress Notifications Center

Based on the number of comments we received on WordPress admin notices being abused, it’s clear that a number of you feel the same way I do. Thanks to the healthy discussion that took place, I learned several new things about admin notices I’d like to share with you.

Themes Do it Too

While the crux of the article focuses on plugins being the largest offender, the issue also applies to themes hosted in and outside of the WordPress theme directory. In one of the more extreme examples I discovered, earlier this year, Redux Framework added an admin notice that informed users of a new commercial extension.

When users questioned how to remove the notices, Redux Framework developers responded by creating a commercial extension.

Redux Framework Admin Notice
Redux Framework Admin Notice

For $59 a year, the extension removes admin notices, ads from the options panel, and the dashboard news widget. Even though the notices and ads are only displayed when the framework’s dev mode is enabled, it seems like a ridiculous way to generate revenue.

While researching for this article, I discovered that Dovy Paukstys, Co-Founder and lead developer of Redux Framework, is in the process of removing advertising from current and future admin notices. Paukstys provided the Tavern with the following statement:

As a fellow developer, I can see how frustrating an admin notice can be when used as an ad. To support the requests of the community, we will no longer use admin notices to advertise premium features. We will use admin notices for their intended purpose, to inform and educate our users.

We hope that other frameworks, plugins, and products will follow suit.

WP Notification Center

Inspired by our article, WPBeginner looks into whether or not WordPress needs a notification center. As it turns out, there are a couple of different plugins and projects in the works aiming to solve this problem.

The WP Notification Center plugin, developed by Barry Kooij and Never5, adds a notification center to WordPress. This plugin moves admin notices to a central location freeing up valuable screen real-estate.

WP Notification Center
WP Notification Center

When activated, a notifications area is added to the admin bar. This tells you the number of notices available and provides quick viewing access. The messages are also color coded to easily tell the difference between update and error messages.

Links within the notice take you to the corresponding admin page to view more details. Unfortunately, you can’t dismiss notices from the admin toolbar without navigating to the links within them. According to Kooij, dismissing notices is a difficult problem to fix.

The admin notices are added in code so I can’t stop them from being added. That means I would need to store what notices are dismissed and check all added notices on every admin page load to filter out the ones that are dismissed.

It’s the other way around from an ideal situation, where a notice would be added to the database and I can simply remove it when it’s dismissed.

As for the possibility of getting WP Notification Center into core, “I would love to write a patch for core that would set this up the right way,” Kooij said. “That would eventually involve deprecating and stop displaying notifications that are being added the old way.”

If you’re interested in tackling this problem or would like to contribute to other facets of the project, you can find it on GitHub where issues and pull requests are welcomed.

WordPress Notifications API

During the WordPress Core developer chat back in January, John Blackbourn proposed a Notifications API that would replace wp_mail() with an extensible API. The API could be hooked into by developers to send notifications via webhooks that would enable Slack and IM notifications. There would also be UI added so users and admins can choose which individual notifications and types to opt-in/out of.

The API is not directly relevant to admin notices but it’s possible they could be connected in the future. Blackbourn plans to publish a detailed blog post outlining the idea in-depth within the next week or two.

Jetpack Notifications

Jetpack handles notifications via a module that adds an icon to the toolbar. Notifications include, Likes, Comments, Follows, and the ability to moderate and reply to comments.

Jetpack Notifications
Jetpack Notifications

I use this notifications area all the time to moderate and respond to comments. It’s convenient and usually loads items quickly. However, I’m not sure how well the interface would work if admin notices from themes and plugins were added.

Subscribers Can Possibly See Admin Notices

One of the most surprising things I’ve learned is that users who are subscribers can possibly see admin notices. On the surface, this doesn’t make sense as subscribers don’t have the capabilities necessary to act on notices. I tested this theory on the WP Tavern test site by activating both Yoast SEO and the All in One SEO plugin.

This is what I see while logged in as an admin.

Admin Notices While Logged in as Admin
Admin Notices While Logged in as Admin

This is the same dashboard while logged in as a subscriber.

Admin Notices While Logged in as A Subscriber
Admin Notices While Logged in as A Subscriber

As you can see, the notices disappear when logged in as a subscriber. While I initially thought this was an issue in core, it appears to be more of a developer issue. JS Morisset, who commented on the original article has a possible explanation:

The word ‘admin’ (for notices) could be interpreted in two ways — either they’re admin / back-end notices, or they’re administrator notices.

I’ve always understood that they are the former (notices displayed on the admin back-end), and can be seen by any / all back-end users, so I use ‘current_user_can()’ in my own code to display different kinds of messages. Maybe this is more of a developer awareness issue than a core WP issue.

While I have not analyzed the code in the plugins I tested, the current_user_can() capability check would explain why admins see notices while subscribers do not.

What I’d Like to See in a Centralized WordPress Notifications Center

Admin notices are a great way for developers to inform users of important information. But with all the notices bombarding site administrators these days, there’s a need for an organizational user interface to manage them all. When considering the types of notifications to allow and display, a notification center in WordPress can easily turn into a deep rabbit hole.

What I’d like to see is a notification center that notifies me of core, plugin, and theme updates in addition to whatever notices those items generate. I also want it to tell me about errors on the site. These notifications should be in an easy-to-use interface that’s quick to access. Notifications should be dismissable or have a status where they can be marked as read.

As seen above, there are plenty of people and projects working on solutions to this problem. What would be your ideal WordPress notifications center?

WordPress 4.6 Development Kicks Off This Week, Dominik Schilling to Lead Release

photo credit: Angelina Litvin
photo credit: Angelina Litvin

As soon as WordPress 4.5 was out the door, WordPress 4.6 release lead Dominik Schilling opened up the floor for discussion on wish list items ahead of the kickoff chat on Wednesday. The development community chimed in with feedback on their users’ biggest pain points, important UX issues to be solved, and existing features they would like to see polished.

If the 200+ comments on the post are any indication, WordPress users and contributors are buzzing with ideas for improving the software in the upcoming release. The Make/WordPress core blog doesn’t have a voting system, but a few of the wish list items with the most +1’s include:

Ella Van Dorpe also posted a summary of the most recent meeting for contributors on the core editor component. The team discussed a wish list for the editor in 4.6 and beyond, including the possibility of creating a feature plugin that uses ICE to allow suggestions and comments on content. A revamp of the Publish meta box, more experimentation with inline toolbars, more formatting shortcodes, and other improvements are also on the list.

Weston Ruter and contributors plan to continue chipping away at the customizer roadmap and component page with a focus on customizer transactions. Ruter would also like to introduce basic content authorship in the customizer in 4.6, along with improvements to existing features.

The 4.6 wish list offers a small preview of what might be coming in this release, and there’s still time to contribute new items and feedback. If you want to advocate for your ticket or wish list item, join the WordPress 4.6 kickoff chat in the #core Slack channel on Wednesday at 3:00PM CDT.

Help Test the New WordPress Importer Plugin in Development

photo credit: Ryan McGuire
photo credit: Ryan McGuire

The official WordPress Importer plugin is in shambles and has frustrated users with inconsistent performance for years. The plugin has more than a million active installations and is critical for migrations, unless you are familiar with using more advanced tools. With years of unresolved support threads identifying the plugin’s many bugs, the importer is in need of some help.

In a volunteer-driven open source community, important projects like the WordPress importer can go neglected for a long time until someone gets inspired to take on the responsibility. The good news, however, is that the importer is in the process of being completely rewritten thanks to Ryan McCue, who is also a leader on the WP REST API project.

The WordPress Importer Redux project is available on GitHub with fixes for some of the previous plugin’s most troublesome issues. McCue is rewriting the importer with the goals of making it “fast, lightweight, and consistent.” He summarized the major improvements that are part of version 2 in a post on Make/WordPress core blog:

  • Way less memory usage: Testing shows memory usage to import a 41MB WXR file is down from 132MB to 19MB (less than half the actual file size!). This means no more splitting files just to get them to import.
  • Faster parser: By using a streaming XML parser, we process data as we go, which is much more scalable than the current approach. Content can begin being imported as soon as the file is read, rather than waiting for pre-processing.
  • Resumable parsing: By storing more in the database instead of variables, we can quit and resume imports on-the-go.
  • Partial imports: Rethinking the deduplication approach allows better partial imports, such as when you’re updating a production site from staging.
  • Better CLI: Treating the CLI as a first-class citizen means a better experience for those doing imports on a daily basis, and better code quality and reusability.

Until recently, the new importer had no UI, so the only way to test it was to run it via WP-CLI. A new Admin UI branch of the project is now available so you can download the plugin as a zip and activate it inside WordPress. McCue tweeted a sneak peak at the progress bar for the import summary:

He is also working on a better user mapping UI for the importer. This image shows the UI in progress with the old one at the bottom for reference.


If you want to test the new importer, McCue encourages users to compare the experience to the old importer and take note of what works and what breaks. Feedback is welcome in the project’s GitHub issues queue on the designated general feedback thread.

Words and Pictures Course at Newspace Center for Photography

I will be teaching Words and Pictures: Photoblogging and Web Publishing for Photographers at Newspace Center for Photography for 4 Wednesdays, May 11 – June 1 from 6:30-9:30PM in Portland Oregon. This is an intimate teaching location and limited seating, so register now for your spot. Teaching WordPress at the client, college, and workshop level […]

Assets/Readmes not showing properly on Plugin Pages

1541 UTC – Wed 13 April

We are aware of an issue where your assets (banners etc) and readme information isn’t loading properly, and we are looking into it.

Please DO NOT push your code multiple times! It’s like ringing a doorbell over and over. It doesn’t actually make things work better 😉

As a general reminder, though, please try to keep your readme to under 10k. You can shuffle your changelog off to a separate file (chaneglog.txt) to keep things smaller. After all, no one really reads the 1.x version of your changelog from 6 years ago.

In addition, if your plugin is very large, it’s okay to remove old versions from SVN. That will ensure processing and syncing is faster 🙂

We will update this post with any information as we determine exactly what’s wrong.

Update 1: One of the servers is running behind again. So please just be patient. Go for a run. Dance. Sing. It’ll catch up 🙂

WordPress 4.5 “Coleman” Released, Introduces Custom Logos, Responsive Previews, Improved Editing Experience

photo credit: BBC Radio
photo credit: BBC Radio

WordPress 4.5 was released today, named in honor of Coleman Hawkins, an American jazz tenor saxophonist. Hawkins was one of the first musicians to establish the tenor saxophone as a jazz horn. Compared to other major releases, this one is short on show-stopping features but keeps WordPress on the path of steady, incremental improvements.

Most of the updates for users focus on making WordPress content easier to format, edit, and customize. Here are a few of the highlights.

Custom Logos: Native Support for a Theme Logo

WordPress 4.5 introduces native support for a theme logo with code borrowed from Jetpack’s implementation. When a theme declares support for a custom logo, an upload form is added under the Site Identity panel of the customizer.

Image credit: Ryan Boren
Image credit: Ryan Boren

This feature is a big win for theme developers, as they now have a standard way of including support for a logo. When they opt to follow core’s implementation, users will always know where to find the logo upload.

“Given the hundreds of themes with their own implementation, it makes sense that core would standardize this,” said WordPress Theme Review Team admin Justin Tadlock. “The concept has been well tested for years in themes (and Jetpack). It’s a natural progression that core would get it, just like core standardized post classes, body classes, featured images, and other features that started out in the theme space. There’s an obvious need for it.”

Customizer Improvements: Live Responsive Previews and Selective Refresh

Selective refresh is one of the under-the-hood updates to the customizer that makes a big difference for users. It makes previews more instant, instead of reloading the entire preview for each setting change. This is a much needed improvement that gives the customizer the true live preview experience that it was previously lacking.

“Selective refresh is a hybrid preview mechanism that has the performance benefit of not having to refresh the entire preview window,” Customizer component maintainer Weston Ruter said. “This was previously available with JS-applied postMessage previews, but selective refresh also improves the accuracy of the previewed change while reducing the amount of code you have to write; it also makes it possible to do performant previews that would previously been practically impossible.”

After updating your site to 4.5, you can see a live example of selective refresh when editing menus. All core themes and core widgets now support selective refresh and users should see major performance improvements.

This release also makes it easier for users to customize their sites with mobile devices in mind. It adds buttons to the customizer controls footer that enable desktop, tablet, and phone-sized device previews. Instead of having to test the site on different devices, users can see a live preview of how the design will respond while making changes.


Improvements to Formatting and Editing Content

WordPress 4.5 adds a more intuitive interface for editing inline links in the visual editor. The interface detects if a user is entering a URL or attempting to search for one. The updated search uses jQuery UI Autocomplete to populate existing content as the user is typing.


This release also adds more formatting shortcuts to the existing ones for lists and headings. You can now use shortcuts for horizontal lines and code tags.


Developers who utilize the REST API infrastructure will want to take note of a breaking change in this release that could potentially cause issues with plugins that depend on the API. The changes break backwards compatibility for the sake of fixing a bug regarding slashed data.

Other noteworthy updates include:

  • Improvements to comment moderation screen with visual enhancements and a maximum length for comment form fields
  • Performance enhancements for images: Increased compression makes images load up to 50% faster with no noticeable quality loss
  • Enhanced script loader: Better support for script header/footer dependencies, new wp_add_inline_script() enables adding extra code to registered scripts
  • Better embed templates: these are now split into parts and can be customized by themes using the template hierarchy

The 4.5 release was led by Mike Schroder and deputies Mel Choyce and Adam Silverstein. Schroder coordinated the efforts of 286 volunteers who contributed to WordPress 4.5. Check out the video for a quick overview of the highlights of this release:

Ultimate Guide on How to Connect AWeber to WordPress

Want to connect AWeber with your WordPress site? AWeber is the one of the most popular email marketing services on the web. In this ultimate guide, we will show you how to connect AWeber to WordPress.

Complete guide on connecting Aweber and WordPress

Why Email List is Important?

Ever wondered why all popular websites like Facebook, Twitter, New York Times, want your email address?

The answer is really simple. Email is the best way to reach your customers.

Not everyone has a Facebook or Twitter account, but everyone has an email address. Most people check their email multiple times a day. With push notifications enabled on phones, people are hooked up to their email 24/7.

Email gives you much closer and personal access to your customers than any other marketing or communication tool available today.

Learn more about why you should start building your email list right away.

Having said that, let’s see how you can get started with AWeber to build your email list.

What is AWeber?

AWeber is an email marketing service provider. Unlike your personal email service provider (Gmail, your ISP, web mail services), AWeber specializes in sending mass emails.

You can use AWeber to send regular email updates to your blog subscribers.

It is a paid service and their pricing starts from $19/month for 500 subscribers and unlimited emails. You get first month for free as part of the trial.

How to Setup AWeber

Visit the AWeber website and sign up for an account.

AWeber signup

You will be asked to provide personal and credit card information.

Remember, that AWeber offers free 30 day trial. If you cancel before the trial period, then your credit card will not be charged.

Upon signup, you need to click on let’s get started button to continue.

Getting started with your first email list

You will be asked to provide your company name, website, and an address. This address will appear at the bottom of your emails.

A valid postal address is required by the CAN-SPAM Act. It improves the deliverability of your emails and protects you against spam filters.

Provide a postal address

After that you need to enter sender’s name and email address. This name and email address will be used in outgoing emails for your list.

Sender name and email

Click on the next step button to continue.

You will be asked to provide a name and description for your email list. This name and description will be used internally and will help you locate your email list in the AWeber dashboard.

Provide listname and description

Click on the next step button to continue.

You need to select a subject line for the confirmation email. This email is sent to users to verify their email address when they sign up for your email list.

AWeber will give you a list of preapproved subject lines. You can choose the one that fits your needs.

You can also create your own subject line. However, an AWeber staff must approve your custom subject line to prevent abuse and spam. This could take at least 1 business day.

Adding a subject line

Click on Create List button to continue.

You have successfully created an AWeber account and also created your first email list.

Now we will show you how to add AWeber email signup forms to your WordPress site.

Adding AWeber Signup Forms

There are multiple ways to add an AWeber email signup form to your WordPress site. There are default AWeber sign up forms that you can copy and paste from your AWeber account.

There are also highly optimized signup forms created with OptinMonster. These signup forms will get you many more signups. See how we increased our email subscribers by 600% using OptinMonster.

There are also custom signup forms that you can create with WPForms, the most beginner friendly contact form plugin for WordPress.

We will show you all these methods in this guide. Let’s get started.

Default AWeber Signup Forms

AWeber comes with easy tools that allow you to create your own signup forms and embed them into your WordPress site.

Simply login to your AWeber website and click on Signup forms.

AWeber signup forms

On the next page, click on create a new signup form button to continue.

This will bring you to AWeber’s form builder tool. It comes with handy templates that you can choose as a starting point. You can then edit the form by clicking on an item in the live preview.

Design your signup form in AWeber

Once you are satisfied with the form design, you need to click on go to step 2 button.

This will bring you to form settings. You can choose what happens when users fill out form. Best option is to redirect them to a page on your own WordPress site.

Form settings

Next option is what happens, if a user is already subscribed. Again you can create a page on your WordPress site and redirect users there.

Click on go to step 3 button.

Save your form and then click on ‘I will install my own form’.

AWeber will now show you two sets of codes that you can add to your WordPress site to display a signup form.

Click on ‘Raw HTML Version’ and copy the code.

Get your form code

Now you need to visit your WordPress admin area and click on Appearance » Widgets.

From the list of available widgets, drag and drop Text widget to a sidebar where you want to display your signup form.

Signup form in widget

Paste the signup form code you copied from AWeber in the widget’s textarea. Click on the save button to store your widget settings.

That’s all, you can now visit your website to see the signup form in action.

Adding AWeber Signup Forms with OptinMonster

As you saw, adding a basic AWeber signup form in WordPress is quite easy. However, the basic forms are not ideal for high conversions.

You need forms that get people to notice your signup form.

This is where OptinMonster comes in. It is the most popular lead generation tool in the market. It allows you to create beautiful sign up forms that are easily noticeable, highly engaging, and incredibly powerful.

OptinMonster comes with different kinds of signup forms such as exit-intent popups, floating bar, after post forms, sidebar forms, slide-in forms, full screen welcome gates, and more.

It comes with powerful features like MonsterLinks (2-step optins), Scroll detection, A/B testing, page level targeting, and more.

OptinMonster works with all popular email marketing services including AWeber.

Adding AWeber Signup Form Using WPForms

WPForms is the most beginner friendly contact form plugin for WordPress. It comes with an AWeber addon, which allows you to add AWeber to your contact form or create custom AWeber signup forms anywhere in your WordPress site.

Step 1: Install AWeber Addon

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

After installing WPForms plugin, simply go to WPForms » Addons page. Click on the Install Addon button next to AWeber Addon.

Install AWeber Addon

WPForms will now fetch and install the Addon and will show you a success message. After that you need to click on the Activate button to start using AWeber Addon with WPForms.

Activate AWeber addon

Step 2: Connect WPForms to Your AWeber Account

Now that you have successfully installed AWeber addon, the next step is to connect your WordPress site to your AWeber account.

Visit WPForms » Settings page and then click on the Integrations tab.

There you will find AWeber integration option. Clicking on it will display ‘Add Account’ button, which will display two fields.

AWeber integration under WPForms settings

You will also see a link, labeled ‘Click here to authorize’. Clicking on the link will open a popup window where you will be asked to sign into your AWeber account.

Sign in to your AWeber account

After entering your AWeber account username and password click on ‘Allow Access’ button.

AWeber will now verify your credentials and will then show you an authorization code.

AWeber Authorization Code

Simply copy the code and paste it in WPForms settings page. You can use anything in the Account Nickname field. Next, click on Connect to AWeber button to continue.

WPForms will now connect to your AWeber account. It will show ‘Connected’ status next to your AWeber integration.

Step 3: Creating AWeber Signup Forms with WPForms

Visit WPForms » Add New to create a new form.

WPForms comes with handy templates to create the most common forms. One of these templates is Newsletter Signup Form, which comes pre-populated with email signup form fields.

Adding new Newsletter Signup Form in WPForms

Clicking on it will launch the form builder where you can edit the form. You can add or remove fields to your form, rearrange them, add description, etc.

Editing a form in WPForms

Once you are satisfied with your form, click on the Marketing tab and then click on AWeber. You will need to click on the ‘Add New Connection’ button.

Connecting form to your email list

You will be asked to provide a nickname for this connection. You can use any nickname you like.

WPForms will now fetch your AWeber account information. You will need to select your AWeber account and email list that you want to use.

After that you need to select list fields you want to add to your form fields.

Connect form fields to email list fields

Don’t forget to click on the save button. You can now exit form builder.

Step 4: Embedding Form in WordPress

There are multiple ways you can add your AWeber signup form. WPForms allows you to add forms to any WordPress post, page, or widget using the shortcode.

You can find the shortcode by visiting WPForms » All Forms page.

Form shortcode

You can also use the WPForms widget to embed form in sidebar. Visit Appearance » Widgets page.

Under the list of available widgets you will find WPForms widget. Add this widget to the sidebar where you want to display your signup form.

WPforms Widget

Send WordPress Posts to AWeber Email List

AWeber makes it super simple to send new WordPress posts to your email subscribers. Here is how you would setup WordPress RSS to AWeber newsletter.

Simply log in to your AWeber dashboard and click on the Messages » Blog Broadcasts.

AWeber blog broadcasts

On the next screen, click on the create a broadcast button to continue.

You will now be asked to provide your WordPress site’s RSS feed URL and choose a subject line.

Setting up RSS to newsletter

After which you can select a template from the left and then click on the load template button. You will notice that the HTML area will automatically fill in with the template.

You can continue editing this template or scroll down to the bottom and start setting up how to send new feed items to your users.

When to send RSS to Email newsletter

Once you are done, simply click on save broadcast button at the bottom.

That’s all, AWeber will now automatically send new blog posts to your email list users.

We hope this ultimate guide on how to connect WordPress to AWeber helped you build and grow your email list. You may also want to see our expert pick of 40 useful tools to manage and grow your WordPress blog

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 on How to Connect AWeber to WordPress appeared first on WPBeginner.

WordPress plugins and accessibility

WordPress recently announced that “all new or updated code released into WordPress core and bundled themes must conform with the WCAG 2.0 guidelines at level AA.” This means WordPress will be making the product more accessible with every new update. Rian Rietveld‘s article WordPress goes WCAG clearly reflects her enthusiasm about this step forward in terms of accessibility.

It aligns with Morten Rand Hendriksen‘s statement during the State of Word 2015 (at 1:12:04 to be precise). We shouldn’t just focus on “study Javascript deeply” but also on “study accessibility deeply”.

For us plugin developers, Rian makes a clear statement: “The accessibility of plugins is the responsibility of each plugin author.” In our book, that means you can’t just ignore accessibility altogether, because you don’t like to focus on it. In this post, I’d like to illustrate what this responsibility means to us.

accessibility responsibility

Write clean code

I’m not a code writer myself but have seen my share of plugin code over the last several years. Some are well coded, some are ‘poor’ coded. And by poor, I mean that some drawings by two-year-old kids have more structure than the code of those plugins. Write clean code, it’s as simple as that. It will make sure screen readers and tools like that will do a better job. It will make a site more accessible.

At Yoast, we don’t take this lightly. We have a well-thought-out code design and development process, which contains a lot of feedback moments. That feedback comes from colleagues and for instance from beta testers. It’s our and your responsibility as a plugin developer to make sure you’re not just outputting code. You have to make sure that you’re outputting clean code.

Use (free) accessibility tools

Running your code through the W3C Validator every once in a while already helps you determine if you’re writing clean code. Usually, the recommendations this validator gives you, are easy to fix. And they might already make a huge difference in term of accessibility.

Another great and very easy-to-use tool is WAVE. Simply install the chrome extension and see for yourself:

WAVE accessibility test - chrome extension

The WAVE extension analyses a variety of possible accessibility issues. In the screenshot above, you can see things like missing ALT attributes and contrast issues. And how about adding these labels to your forms? It’s all not that hard. This WAVE analysis is all done in seconds and really tells you where your code (or website) should be improved for accessibility.

Contrast is also something that’s really easy to test and improve. Simply use WAVE or Lea Verou’s contrast ratio tool. No need to do that on a live website, as we’re talking about your plugin’s user interface here. Please go read my post Easy-to-use accessibility tools for more testing tools.

“Your plugin’s not perfect either”

You were thinking just that, right? Our plugin isn’t perfect either, in terms of accessibility. But we have shown to you over the last years that we’re listening and we’re improving accessibility at a fast pace. Just the other week, we took that to the next level by hiring Andrea Fercia full-time. Andrea specializes in accessibility. He’ll also be dedicating a portion of his time to core, by the way.

Andrea is well-known in the WordPress community. He is the team lead for the accessibility team for WordPress when it comes to core. We’re very happy to have you on board, Andrea. I am sure we’ll be making our plugin(s) even more accessible thanks to your knowledge and experience!

I guess that’s what Rian meant when she wrote: “The accessibility of plugins is the responsibility of each plugin author.” As the plugin author of one of the most-used WordPress plugins, we hope we can set an example in this!

Read more: ‘Easy-to-use accessibility tools’ »


WP REST API Team Aims for WordPress 4.7 for Merge Proposal


The WP REST API team released version 2.0 beta 13 of the feature plugin today. This release includes a couple of breaking changes, JavaScript client updates, and many other fixes and improvements.

Developers who use the plugin in their projects can expect it to follow a more stable release cycle in the future, as beta 13 marks the last of the breaking changes. According to project lead Ryan McCue, the team plans to add new features to minor releases in the 2.x series and bugfix releases in the 2.0.x series.

“Along these lines, we’re going to release a 2.0 final version in the coming months,” McCue said. “This will be a completely stable release with guaranteed backwards compatibility for the foreseeable future. This backwards compatibility ensures that your sites can remain up-to-date with minimal maintenance or issues with upgrading.”

The beta release post also included an updated roadmap for the project. The team is not planning to put forward part two of their merge proposal, which would add the core endpoints, for WordPress 4.6. They will be holding off until WordPress 4.7 in hopes of gaining more users with the stable 2.0 release.

We believe endpoints for the main WordPress objects (posts, users, comments, terms, and taxonomies) are not enough to garner the support needed for the proposal to be accepted. Our hope is that with a stable version 2.0 release, we will attract our community members that have been waiting for the endpoints to be available in core, and submit a merge proposal for the WordPress 4.7 release cycle.

Although the greater WordPress development community is excited about the potential of the REST API, the contributor base remains relatively small and spread thin for the task of keeping pace with core. McCue, speaking on behalf of the team, said they are looking to get more help from WordPress core component maintainers as well as outside developers.

“Moving forward, the API team sees our role as advisory over the API itself, with the API treated as an integral part of the component rather than maintained by a separate team,” McCue said. “We’re also going to continue to work on our feature plugins (metadata, site/multisite, menus/widgets, and authentication) in parallel, and are looking for help on these as well.”

With the plugin approaching its 2.0 final version on a more stable path, it is a good time for new developers to get involved. The WP REST API team plans to allocate more time for mentoring and helping developers use the API. If you want to get involved, jump in on the comments of the release post or join the team in the #core-restapi Slack channel.