Archiv der Kategorie: Tutorial

Persisted WordPress Admin Notices: Part 4

So far in this series, we’ve covered two separate ways to dismiss persistent WordPress admin notices. We’ll build on that in this fourth and final part of the tutorial series by looking at two more specific methods to permanently dismiss your admin notices. We’ll round things off by showing how to create your own custom admin notice types and add decorations such as icons.

Sticky Admin Notice

We already know how to display an admin notice that can be dismissed. All we have to do is add the is-dismissible CSS class to the containing div element. However, this is only temporary and will only dismiss the notice for the current page. As soon as the page reloads, it reappears again.

To make it permanently dismissible involves more code than we’ve seen so far, but it isn’t too difficult to implement. Let’s take a look at what’s involved, starting with an overview.

We’ll use a custom option to store the display status of our admin notice. On plugin activation, this option will be created/updated and set to true. The admin notice will then only display if the option is currently true.

The key to this method is using Ajax to allow us to set the option to false when the dismiss button is clicked. Once successfully set to false, the conditional code that checks the option status will fail, and the admin notice will no longer be displayed.

Let’s begin by adding the admin notice itself, which will be a plain notice to begin. In Gwyer_Dismissible_Admin_Notices::init(), add a new add_action call:

Then add the dismiss_admin_notice() callback function to the same class:

This adds an admin notice that displays only on the plugin admin page and is very similar to what we’ve seen in previous tutorials. The only slight difference here is that we’ve also added a CSS ID to the admin notice div container. This will be used to specifically target the admin notice we’re interested in.

Standard admin notice with custom CSS ID

We’ll need to add JavaScript code to make the Ajax call work, so add a js folder in the root admin-notices plugin folder and inside create a file called admin-notices.js. Add code to the new file to test it’s loading properly by outputting a console message.

In Gwyer_Plugin_Options::init(), add a new add_action call to enqueue our script file:

We only want this JavaScript file to be loaded on the plugin options page, so we need a way to conditionally enqueue it. We can do this by checking what admin page we’re currently on to see if it’s our plugin options page.

We can get a handle to our plugin options page by storing the return value of add_options_page() in a class property. We had no need of this value previously, so we just called add_options_page() without storing the return value.

Add a class property to Gwyer_Plugin_Options:

Then, in create_admin_menu_page(), use this new property to store the handle to our plugin options page:

We can finally enqueue our JavaScript file so that it loads only on the plugin options page:

If all went well then you’ll see an admin-notices.js loaded! message outputted to the browser console.

Admin notice JavaScript loaded

Update the JavaScript code in admin-notices.php to the following:

Here, we’re listening for a click event on the an1 CSS ID we added to our admin notice earlier. As soon as it’s clicked, an Ajax request is fired. Let’s handle that request next.

In Gwyer_Dismissible_Admin_Notices::init(), add a new add_action call:

This will run the callback function once the display_dismissible_admin_notice Ajax request fires. Remember that this originally was defined as the data.action property in our Ajax request.

Now add the display_dismissible_admin_notice callback function to Gwyer_Dismissible_Admin_Notices:

Save your changes, reload the plugin options page, and click the admin notice dismiss button to see the Ajax request in action!

The Ajax request in action

If the request was successful then you’ll see a Processing Ajax request… DONE! message displayed in the browser console.

The final piece of the puzzle is to create a custom option initially set to true but which is then set to false when the dismiss button is clicked. Then, when the plugin options page loads, the admin notice only displays if the custom option value is true.

In Gwyer_Dismissible_Admin_Notices::init(), add a second call to register_activation_hook():

And add the create_custom_option callback function to the class:

Now, when the plugin is activated, a custom option called gwyer-dismiss is created and set to true.

Update display_dismissible_admin_notice() to update our custom option when the Ajax request fires:

Now all that’s left to do is update dismiss_admin_notice() to check for the value of the custom option and only render the admin notice if it is set to true.

Deactivate and reactivate the plugin to test the code we’ve added. Visit the plugin options page, dismiss the admin notice, and refresh the page. The notice should no longer be visible. Yay!

Because the custom option is set to true every time the plugin is activated, you can repeat the above steps to test the dismissible admin notice as many times as you like.

To keep things simple, this was a bare-bones example of using an Ajax request to set the custom admin notice option. In practice, you’d want to use a nonce (number used once) value to validate the Ajax request as a minimum security measure.

This was a lot of work to just permanently dismiss an admin notice, but the final effect works well and is something you can use to good effect in your own plugins.

Custom Action Admin Notice Dismissal

It’s time to look at a slightly different method for dismissing admin notices now. This is a nag type of admin notice that displays on all admin screens and can’t be dismissed until some action has been performed.

Note: Use this method with caution or you’ll risk alienating your plugin users very quickly!

The specific action we’ll focus on in our example will be to display an admin notice until a required plugin or list of plugins have been installed and activated.

Unlike the previous method where we had to jump through hoops to get an admin notice to be permanently dismissible, the solution for this method is refreshingly simple!

First, comment out all the function calls in Gwyer_Dismissible_Admin_Notices::init(). Then, add a new add_action() function:

And define the callback as follows:

That’s all there is to it! I told you it was simple, didn’t I?

The only thing we did differently this time was to use the is_plugin_active() WordPress function to test if the Hello Dolly plugin is installed and activated. If not, is_plugin_active() will return false, and our admin notice will be displayed.

Example of a nag admin notice

Try activating the Hello Dolly plugin to verify the admin notice goes away.

This works well for single plugins, but what if you wanted to remind users to activate multiple plugins? Instead of hard-coding in the Hello Dolly plugin information, we could create an array to whitelist our required plugins.

Replace install_plugin_to_dismiss_admin_notice() with:

The required plugins are now stored in an array which is looped over to check if each plugin has been activated. For any plugin not currently active, the name is added to a $requires_activating array which is outputted via the admin notice as a comma-separated list of required plugin names.

List of required plugins

Custom Admin Notices

Before we finish, let’s have a little fun by creating our own custom admin notice types. Let’s see how to add some custom admin notice types of our own. By now you’ll be fully familiar with the four built-in admin notices WordPress provides by default, but it’s not that difficult to come up with some of our own.

First, though, comment out all function calls in Gwyer_Dismissible_Admin_Notices::init() so we start out on a clean slate.

We’ll need to add CSS for our custom admin notice types, so in the root plugin folder add a css folder, and inside create a file called admin-notices.css. To enqueue it on all admin pages, add a new add_action call in Gwyer_Plugin_Options::init().

Then, for the enqueue_styles() callback, add this method to the same class:

Now let’s set up a new method to output our custom admin notices. In Gwyer_Admin_Notices::init(), add:

Then add a callback to display a series of custom admin notices:

Finally, add CSS to admin-notices.css to style our custom admin notices:

After you save the changes, load any admin page to see our custom admin notices.

Some examples of custom admin notices

Judging by the results, it’s probably a good idea to use custom admin notices sparingly, otherwise you’ll run the risk of them looking garish. 

I won’t go into details about the custom CSS used. It’s just for a bit of fun, and most of the styling is pretty self-explanatory.

We used dashicons font icons for our custom admin notices for convenience as they are available in the WordPress admin by default. But you could import and use any icons you like for extra decoration.

Try the Code for Yourself

All the code from this tutorial series has been wrapped up in a WordPress plugin for you to download. Take a look at the code, extend it, and implement new ways to display (and dismiss) admin notices. Be sure to let me know in the comments if you create something cool! I’d love to see what you come up with.


Thank you for joining me in this four-part tutorial series. Hopefully you’ll now have a lot more confidence in how you implement admin notices in your own projects.

We’ve covered many different aspects of WordPress admin notices, including multiple ways of permanently dismissing them, which isn’t possible without custom code.

Creating your own custom admin notices is pretty easy too, but in practice you’d want to use them sparingly in your own projects. Most of the time it’s best to keep to the default WordPress styles for a consistent user experience.

WordPress has an incredibly active economy. There are themes, plugins, libraries, and many other products that help you build out your site and project. The open-source nature of the platform also makes it a great option from which you can better your programming skills. Whatever the case, you can see what we have available in the Envato Market.

And don’t forget to download the plugin and play around with the code. It’s a great way to get more familiar with how all the pieces fit together. And please let me know your thoughts on the tutorial via the comments below.

from Envato Tuts+ Code – WordPress


Persisted WordPress Admin Notices: Part 3

Welcome back to our series on persisted WordPress admin notices. We’re now in a good position to be able to extend our admin notice functionality and control when they appear on the page.

After that, we’ll move on to persistent admin notices and see how you can make sure they’re dismissed in such a way that they don’t reappear when admin pages are reloaded. 

This is particularly important as custom admin notices implemented in plugins and themes are only really useful when you can permanently dismiss them. It’s not enough to simply add the is-dismissible CSS class.

Controlling When Admin Notices Appear

Up until now, all admin notices have been displayed as soon as the page loads. There may be times when this is inconvenient and you want the admin notice to be displayed after a certain event has been triggered instead.

How about if we wanted a custom admin notice to be displayed on the plugin options page we created earlier, but only after the Save Changes button was clicked?

We already know from part two how to restrict an admin notice to the plugin options page. Let’s find out how we can trigger it to appear after plugin options have been saved.

Begin by commenting out the add_action function call for plugin_admin_notice. Then, add a fourth add_action call in init as follows:

Whenever plugin options are saved, a settings-updated value of true is added to the super global $_GET array variable. We can use this to determine if we need to display our admin notice.

Add a new conditional_plugin_admin_notice method to Gwyer_Admin_Notices that outputs the value of $_GET to the screen.

When the plugin options page is loaded normally we don’t see a value set for settings-updated.

Normal Plugin Options Page Loading

Now enter some text in the Enter some text field and click Save Changes. This time, we see settings-updated set to true, which we can put to good use.

The settings-updated value set to true

Replace the conditional_plugin_admin_notice with:

By now, this code should be looking familiar to you. A couple of new features have been added, though. Firstly, the conditional expression has been extended to test for the presence of settings-update. Now, the admin notice will only display if we’re on the plugin options page and if settings-updated is set to true.

Also, the current user display name is outputted to make the admin notice a little more personal.

A more personal admin notice message

The wp_get_current_user() function returns information about the currently logged-in user. This object is stored in $current_user and contains details such as user email, ID, first name, last name, and display name, which is the particular property we’re interested in.

Finally, for a little extra polish, we’ve prevented the default admin notice from displaying so our custom one is the only one visible to the user. To achieve this, we just added a single line of code to conditional_plugin_admin_notice() to output CSS to hide the unwanted admin notice.

The final result when plugin options are saved is shown below.

The finished admin notice to show the plugin has been updated

While this works fine for demonstration purposes, a better (and cleaner) approach would be to add styles to a separate style sheet instead and enqueue it on the plugin options page only.

Our custom admin notice could be extended even further in a number of ways. One possibility could be to maintain a log that stored the current date/time along with user information every time the plugin options were saved.

Or how about getting the admin notice to display how many times the plugin options have been saved that day, week, month, etc.? I’m sure you can think of more examples too!

Dismissing Persisted Admin Notices Effectively

It’s time to get our hands dirty now and dig into more in-depth code as we turn our attention to dismissing persistent admin notices. Up until now, the only way we’ve seen how to do this is to add the .is-dismissible CSS class to our admin notice div container. This dismisses the admin notice for the current page, but it isn’t much use in practice as it reappears when an admin page is reloaded.

So how can we fix this? We’ll look at several different methods of dismissing persistent admin notices, including:

  • One-off admin notice that disappears after one view.
  • An admin notice counter that disappears after a certain number of views.
  • Sticky admin notice that remains dismissed upon page refresh.
  • Custom action dismissal (admin notice removed after specific action has completed).

Before we start implementing each of these examples, make sure all add_action() calls in Gwyer_Admin_Notices::init() have been commented out. Then add a new dismissible-admin-notices.php file to the admin_notices plugin folder. Open up this new file and add a new class definition:

In admin_notices.php, add another require_once() call to import our new class:

The Gwyer_Dismissible_Admin_Notices class will contain all code related to dismissing persisted admin notices.

One-Off Admin Notice

The first method we’ll look at is how to display an admin notice just the once so it doesn’t reappear on page load. You could use this method to notify a user when a plugin or theme has just been activated.

Let’s do this for our Admin Notices plugin. We’ll start by registering a WordPress transient option upon plugin activation that’s set to expire almost immediately.

In the Gwyer_Dismissible_Admin_Notices class, add a call to register_activation_hook():

The register_activation_hook() function requires you to specify the path to the main plugin file, but we’re currently in dismissible-admin-notices.php. So we can’t just use the PHP magic constant __FILE__ we used previously as this always points to the current PHP file.

Instead, we have to build the path to the main plugin file ourselves using plugin_dir_path( __FILE__ ) . 'admin-notices.php'.

When the Admin Notices plugin is activated, it will run code added to a set_admin_notice_transient class method, which we’ll define next.

This method creates a new transient called 'admin-notice-transient' with a value of true, and is set to expire after five seconds.

Let’s make use of this transient by conditionally displaying an admin notice if we’re on the right admin page and our transient still exists.

Add a new add_action() call to init().

Then, add the display_admin_notice callback function as a new class method:

Similarly to previous examples, the admin notice only displays if we are on a specific page—in this case, the main admin plugins page. But we have an additional condition that the 'admin-notice-transient' must also exist, otherwise the admin notice won’t display.

After the admin notice is outputted, the transient is deleted immediately, even though we initially set it to expire after only five seconds. This just ensures that it won’t be shown again. This could potentially happen if a user tried to refresh the plugins page very quickly. But by deliberately deleting the transient, we can be certain this won’t ever be the case.

To test the code we just added, head on over to the main plugins page and deactivate, then reactivate, the Admin Notices plugin.

The one-off admin notice

The key here is the 'admin-notice-transient' transient setting. Without this, the admin notice would appear every time the plugins page loaded (after the plugin was activated), which isn’t what we want.

Admin Notice Counter

Next up is an admin notice that will display a set number of times only, after which it won’t be visible anymore. Also, this time around it won’t be restricted to any particular admin page.

Before we begin, in the Gwyer_Dismissible_Admin_Notices class, comment out the register_activation_hook() and add_action() function calls. Now let’s set up a basic admin notice which we’ll extend the functionality of shortly.

Add a new add_action() call in init():

And then flesh out the callback function display_admin_notice_counter():

This will display a standard admin notice that will appear on every WordPress admin page.

Standard admin notice ready for customisation

Let’s think about what we need to do. Our admin notice should display a set number of times, and each time it appears an internal counter is increased by one. Once the counter limit has been reached, the admin notice shouldn’t appear again.

We want the admin notice to be displayed on any admin page and so the counter value must persist between page loads. One good way of doing this is to use a database option to store the counter value.

Add a counter class property to store the counter limit value:

This will be used shortly to manage how many times the admin notice appears. Inside display_admin_notice_counter(), update the code as follows:

Prior to the admin notice being displayed, we’re retrieving the counter option, and a default value is returned if it doesn’t yet exist. After the admin notice renders, the counter option is increased by one and updated. If it doesn’t exist then a new option will be created to store the current value.

We’ve also updated the CSS class to be an information admin notice.

Try visiting various admin pages and see the counter increase each time.

Counter admin notice in action

The ++$counter code is an example of a pre-increment operator. It adds a value to $counter before it’s saved to the database. If we used a post increment operator (i.e. $counter++) then the value of $counter would be stored first and then increased, which wouldn’t work.

Let’s incorporate $counter_limit now to prevent the admin notice appearing too many times. Add this to display_admin_notice_counter() underneath the declaration for $counter:

Now, once the admin notice has displayed five times, it won’t be visible on subsequent admin pages. It might be nice, though, to display a message the last time the admin notice appears so the user knows it won’t appear again. Extend the conditional expression and output an additional message:

However, you won’t see the message if you’ve already gone over the counter limit. You can temporarily solve this by increasing the $counter_limit variable.

Display an additional message on the final render

For testing purposes, it would be better to be able to reset the counter limit. If you know how to edit the database, you can go in and change the option directly, but this can be tedious to do multiple times. So let’s implement our own reset feature.

First, change $counter_limit back to 5 and add a new class property:

Then, inside init() replace


The reset function should either show our counter admin notice or delete the admin_notice_counter database option and display a warning admin notice instead.

To use the new reset feature, simply change $counter_reset to true and load any admin page.

Reset admin notice counter

Then change it back to false again.

Admin notice counter successfully reset

Note: This method could easily be used to display an admin notice just the once, as we did in the previous example, but it’s slightly more complicated to set up. It really depends on your requirements.

If all you ever need is a single use admin notice then the previous method will probably suit your needs better and is quicker to implement. But the counter method is more flexible, and once set up, it’s just as easy to use in your own projects.


We’ve covered quite a lot of ground in part three of this tutorial series. We’ve seen how to control when admin notices appear rather than just always appearing as soon as an admin page has finished loading. This is useful in many ways, but our example showed how to display a custom admin notice after plugin options had been saved.

Then, we moved on to two distinct examples of dismissing persistent admin notices. This gives you a lot of flexibility in how you present admin notices to the user. And in the next and final part of this tutorial series, we’ll be looking at more ways to dismiss persistent admin notices.

And, for a bit of fun, we’ll create our own custom admin notice types and add icon decorations.

from Envato Tuts+ Code – WordPress

Persisted WordPress Admin Notices: Part 2

In part one of this series, we learned how to implement a basic admin notice that appears at the top of every WordPress admin page. In this tutorial, we’ll start to build out a plugin to contain all our custom admin notice code.

We’ll begin by implementing standard admin notices and use them as a base for more flexible and advanced examples.

Setting Up Our Plugin

First, though, let’s set up a new plugin from scratch that we’ll be using for all our admin notices so we’re ready to start entering code.

I’ll assume here that you already have a local WP development site set up. If not then refer back to the links in part one of this tutorial series.

Create a new plugin folder called admin_notices inside /wp-content/plugins/, and then create an admin_notices.php file which will be the main plugin file.

Open up admin_notices.php in your favorite editor and add the basic plugin structure:

We added a basic plugin header so WordPress recognises our plugin. This is followed by a class that will contain methods to display our admin notices.

I named the class Gwyer_Admin_Notices to try and make it as unique as possible. This way, it’s much less likely to conflict with an existing class name.

Let’s start by displaying a basic admin notice, and then add to it to make it more useful. To create an admin notice, add the admin_notices hook to the init() function:

The hook includes a test_notice callback function which will be used to output the admin notice markup.

Add the following class method to Gwyer_Admin_Notices to display the actual admin notice. For the messages, we’ll be using classic movie quotes from the last 100 years of movies.

Activate the plugin to show the test notice.

Adding a basic admin notice to our plugin

Let’s also add examples of the other types of admin notice we can display including the dismissible type by adding the is-dismissible CSS class. Add these to the test_notice() method underneath the existing admin notice div:

Full set of admin notice types

This is the full array of admin notice types we can display via the WordPress core CSS classes. Remember, though, that the dismissible admin notice will reappear on each page load!

‚Dismissible‘ admin notice in this context means only for the current page. Having persistent admin notices isn’t very flexible, so later on we’ll be specifically looking at different ways you can dismiss your admin notices effectively.

Admin Notice Hooks

So far, we’ve only used the admin_notice hook to implement an admin notice. There are in fact four separate admin notice hooks that you can use to display notifications, but admin_notice is the one most commonly used.

The four hooks available are:

*No official documentation currently available for these hooks.

So where would you typically use all_admin_notices, user_admin_notices, and network_admin_notices? And how do they differ from admin_notices?

I said previously that the admin_notices hook displays notifications on all admin pages, but this isn’t strictly true. If you take a look at admin-header.php in WordPress core, you’ll see that admin_notices, network_admin_notices, and user_admin_notices are mutually exclusive. That is, only one of these hooks fires on a WordPress admin page.

A series of conditional expressions evaluates the current admin page and fires just one of them depending on the type of admin page you’re currently on.

Firstly, is_network_admin() checks to see if you’re on a network admin screen (e.g. any admin page based on a /wp-admin/network/ URL). If so, the network_admin_notices hook fires.

Otherwise, is_user_admin() checks to see if you’re on a user admin screen (e.g. any admin page based on a /wp-admin/user/ URL). If so, the user_admin_notices hook fires. 

And, as you might have guessed, if both is_network_admin() and is_user_admin() return false then the admin_notices hook fires.

That just leaves the all_admin_notices hook. This hook isn’t part of the conditional expression discussed above, so this hook is guaranteed to display on all admin pages no matter what, including multisite network admin pages.

To clarify, for any WordPress admin page, only the all_admin_notices hook is guaranteed to always fire. Out of the other three hooks, only one will fire depending on the admin page you’re currently on.

I’d encourage you to take a look at admin-header.php (towards the end of the file) to see for yourself how WordPress evaluates when to use each admin notices hook.

We’ll only be using admin_notices throughout this tutorial series, but you may find you have a need for some of the other hooks in your own project, so it’s well worth checking them out.

Displaying Admin Notices on Specific Pages

Let’s turn our attention now to displaying admin notices on specific pages. First, comment out the call to add_action so our test notices aren’t displayed anymore.

Inside init(), add a new add_action() call that we’ll use to display an admin notice on one specific admin page.

Then define the specific_admin_page() method as follows:

Save your changes and view any page in the WordPress admin. I’ll try the main dashboard page.

Dashboard admin notice

As you can see, for any admin page you visit, the (base) name of the page is being displayed in the admin notice.

The get_current_screen() function returns a WP_Screen object with details about the current admin screen. The particular object property we’re interested in is WP_Screen->base, which evaluates to the base type of the current screen. Try loading different WordPress admin pages to see what values are returned for WP_Screen->base.

We can use the base value to conditionally load our admin notice only on the dashboard page. The value we need to check for is dashboard. Let’s also show an alternative admin notice if we aren’t on the admin dashboard page. Replace your definition of specific_admin_page() with:

Output base name of current admin page in the admin notice

Everything’s fine when we’re on the dashboard page, but try navigating to any other admin page and see what happens.

Error type admin notice shown when were not on the expected admin page

Using this simple approach gives us quite a bit of flexibility when displaying admin notices on specific admin pages. We can easily extend this to whitelist any number of admin pages we want to show admin notices on.

Once again, replace the specific_admin_pages() function, this time with the following code:

Instead of checking for a single admin page, we now check to see if the base name for the current admin page is in the $whitelist_admin_pages array. When we navigate to the dashboard, media library, or comments admin pages, we see our success admin notice.

Our success message shows on the admin comments page

And when we visit any other admin page (not included in our whitelist array), we see an alternate admin notice.

Only allowed admin pages show the success message

What about displaying an admin notice on a plugin options page? How would we go about that? Before we get into this, we first need to set up a dummy options page for our plugin.

Create a new file called plugin-options.php inside the admin-notices plugin folder we added earlier, and add the following code:

At the top of admin-notices.php (directly above the class declaration), include the plugin options class into the main plugin file with:

I’m not going into too much detail on how the code in plugin-options.php works as that could be a whole tutorial on its own! If you want a refresher then I’d recommend taking a look at the WordPress Codex page on adding plugin options pages.

Basically, all we’re doing is adding a new Admin Notices subpage to the Settings menu. The plugin options page itself contains a single text field which you can enter a string into. When the Save Changes button is clicked, the contents of the text field are saved to the WordPress database.

This is only a bare-bones example of a plugin settings page just for demonstration. It doesn’t include the necessary sanitization or translation functions recommended for a production plugin intended for general release.

Go to Settings > Admin Notices to view the plugin options page.

Plugin options page

As expected, the admin notice we added previously displays on our plugin options page. The error message is displayed because our plugin options page isn’t in the $whitelist_admin_pages array of allowed admin pages. Let’s fix that now.

In order to add our options page to the array, we need to know the base name. Inside specific_admin_page(), change the error admin notice div to the following:

We still get the same error admin notice as before, but this time it includes the base name we need, which turns out to be settings_page_admin-notices/plugin-options. That’s not a name we could have easily guessed, so it was worth taking the time to output it!

Add the base name to the $whitelist_admin_pages array, which should now look like this:

Refresh the plugin options page to see the updated admin notice.

Updated admin notice

Now that we know the plugin options page base name, we can easily create an admin notice that only displays on that admin page. Remove settings_page_admin-notices/plugin-options from the $whitelist_admin_pages array and comment out the second add_action function call in init(). Then add a third action we’ll use for our plugin options page only admin notice. Your init() function should now look like this:

Let’s flesh out the plugin_admin_notice() callback function now. Add this new method to the Gwyer_Admin_Notices class:

This is very similar to specific_admin_page() except we’ve removed the conditional expression. We also added a dismissible button by adding the is-dismissible CSS class, so the admin notice can now be closed too.

Plugin options page only admin notice

Try loading other admin pages to confirm that the admin notice only displays on the plugin options page.


In this tutorial, we learned more about admin notices and the various hooks available for displaying them. We also covered how to display admin notices only on specific pages of the WordPress admin. We developed a dedicated plugin to contain all the custom admin notice code.

In part three, we’ll further extend the plugin by showing how to trigger admin notices when certain events occur. Remember, the open-source nature of WordPress makes it easy to learn and extend. To that end, we have much to review and study in Envato Market if you’re curious.

We’ll then turn our attention to finding out how we can solve the persistent admin notice issue so that they don’t reappear when the page is refreshed. We’ll implement several different methods in our custom plugin to allow us to do this.

from Envato Tuts+ Code – WordPress

Persisted WordPress Admin Notices: Part 1

WordPress admin notices provide a convenient way to display messages to users in the admin area, e.g. after a post has been updated or a plugin has been activated. They’re also used by many themes and plugins to display notifications about anything from new features or security warnings to details about ongoing promotions or upgrade prompts.

WordPress core provides four different admin notices which can be used contextually to alert a user to a specific type of notice. This is achieved by displaying a unique accent color for each type of admin notice.

Admin notices are usually displayed at the top of every admin page to stand out from the main page content and be clearly noticeable. They are elegantly designed so as to not be too visually distracting.

WordPress core admin notice

WordPress also reuses admin notices in other locations throughout the admin interface, such as when a theme or plugin update is available. Core usage of admin notices isn’t limited to just being displayed at the top of the admin screen.

WordPress admin notices in alternative location

Displaying an admin notice in a custom plugin or theme is relatively easy, requiring just a few lines of code, as we’ll discover shortly. However, WordPress doesn’t provide a way by default to dismiss a persisted admin notice.

Even though you can add a dismiss button to any admin notice, this doesn’t prevent it from reappearing when the page is reloaded. Also, admin notices appear on every admin page, which is far from ideal.

If you want to have granular control over exactly when and where admin notices are displayed and to be able to dismiss them effectively, you’ll need to add custom code to modify the default behavior.

What We’ll Be Covering

We’ll start at the beginning and explore the basics of implementing admin notices via a custom plugin, including displaying them only on specific pages in the WordPress admin.

Admin notices appear on every page by default, which isn’t always what you want. For instance, you may only want to display a notification on a plugin options page. So our next port of call will be to conditionally display admin notices depending on the current admin screen.

Building on this, we’ll introduce ways to further manage admin notices by controlling when they appear too. Rather than appearing as soon as the page loads, they will only appear if certain triggering conditions are met. This could be useful, for example, if you wanted to display an admin notice on a plugin options page, but only after settings had been saved.

As mentioned above, there’s no easy way to dismiss persisted admin notices between page loads. So the remainder of the tutorial series will focus mainly on various methods you can employ to dismiss admin notices so they won’t reappear unexpectedly.

Finally, for a bit of fun, we’ll see how you can create your own custom admin notice types and add additional decoration such as icons to your admin notices.

By the end of this tutorial series, you’ll be able to display any type of admin notice anywhere within the WordPress admin. Plus, you’ll be able to decide whether to show them on page load or via a custom action, and you’ll also be able to dismiss them in a variety of different ways, depending on your needs.

Want to Follow Along?

You’ll get most out of this tutorial series if you follow along as we build out each admin notice example. The code is presented in a step-by-step approach to allow you to build a working plugin on your own as we progress through the tutorial. However, if you don’t wish to type in all the code yourself, the finished plugin will be available for download in part four.

It’s assumed that you have at least a rudimentary working knowledge of WordPress plugin development, including how hooks work. If not, then I’d recommend reading up on these topics via the official WordPress documentation before continuing:

In order to test the plugin code for each example, you’ll need a working WordPress site. The easiest way to do this is to install WordPress locally so you have easy access to edit files. 

There are many choices for developing locally with WordPress, including:

If you’re new to WordPress development then Local or DesktopServer are probably easiest to set up. Local is free to use (they have a premium version in the works), and DesktopServer has a limited (free) version plus a premium version available.

Also, some previous experience of PHP and JavaScript is recommended, as is some experience of implementing Ajax requests. However, everything will be explained along the way, so in-depth knowledge isn’t required.

A Closer Look at Admin Notices

Let’s take a look at the most basic implementation of an admin notice and the code required to render a success type notice.

A Successful admin notice

All we did here was to register the display_admin_notice() function that will be run when the admin_notices hook fires. It doesn’t matter what the registered function is called—it won’t affect how the admin notice is rendered.

Don’t worry about entering the code above yourself right now; just focus on how the admin notice is generated as we’ll be building on this in later tutorials.

You can use any markup you like to display an admin notice; however, the recommended format is as follows:

Replace {class} with a list of CSS class names. You should include the class notice plus any one of the following classes to determine the type of admin notice:

  • notice-error (red)
  • notice-warning (yellow/orange)
  • notice-success (green)
  • notice-info (blue)
The various admin notices

The {message} block can be any text or valid HTML which will be displayed inside the admin notice.

The example above shows admin notices on all admin pages, which isn’t always ideal, so in part two we’ll look at how you can control exactly what pages they appear on.

There is another built-in CSS class you can add to div.notice that adds a dismiss button to the admin notice. Let’s see what happens when the same success admin notice has the is-dismissible class added to it.

Our first admin notice

We now have an easy way to dismiss an admin notice. However, before you get too excited, there’s a problem with using this method. If you refresh the page, the admin notice reappears! So, even though you can set an admin notice to be dismissible, it’s persistent, and the dismissed status is forgotten between page loads.

We’ll be covering persistent admin notices in detail later on and exploring various ways you can dismiss them without them reappearing.

But Admin Notices Are Bad! Aren’t They?

If you’re at all familiar with admin notices in WordPress and/or keep up with WordPress news in general then you may be aware of a certain amount of negativity regarding using admin notices in custom plugins and themes.

This stems from some plugins overusing admin notices in an attempt to get their ‚important‘ messages across. If you have a lot of plugins installed and just a few of them abuse the admin notice system then you can quickly end up with admin notice ’soup‘, where a whole tangle of notices are displayed at the top of every admin page.

Overloading admin screens with unnecessary notices can cause chaos (and headaches) and is understandably annoying for users as it makes managing a site more difficult.

Ideally, only important admin notices, such as critical security updates, should be displayed on every page load. If you’re displaying global admin notices to tell users a plugin has just been updated, and prompt to click a link for more information, then you should really ask yourself whether this needs to be on every admin page.

Also, a typical favorite is to display a non-critical admin notice that can’t easily be permanently dismissed. I guarantee you there is no easier way to alienate your plugin users than by doing this!

However, there are use cases for persistent notices that aren’t dismissible, such as database updates. Plugins that use custom tables may need to run database update routines once in a while to keep the plugin running correctly. So, in this case, it’s reasonable to add a non-dismissible admin notice.

A good rule of thumb is to just employ common sense. Would the admin notice you’re about to add to your plugin annoy you as a user? If so, you might want to rethink adding the notice, or consider if it would be better displayed in an alternative location.


In this tutorial, we’ve covered what admin notices are and the various built-in types provided by WordPress, including a dismissible admin notice. As we’ve seen, there are some drawbacks to the default implementation of admin notices, such as not being dismissible and the fact they are rendered on every admin page.

WordPress has an incredibly active economy. There are themes, plugins, libraries, and many other products that help you build out your site and project. The open-source nature of the platform also makes it a great option from which you can better your programming skills. Whatever the case, you can see what we have available Envato Market.

The rest of the tutorials in this series will focus on how we can extend admin notices to be more practical when used in your own plugins and themes.

from Envato Tuts+ Code – WordPress

Start Learning PHP for WordPress in Our New Course

If you work with WordPress sites, you probably know that they’re built in the PHP programming language. But do you know how PHP really works, beyond copying and pasting code snippets?

In our new short course, Learn PHP for WordPress: First Steps, you’ll learn how to take your WordPress skills to the next level by starting to learn PHP.

What You’ll Learn

In this short course, Rachel McCollin will give you an overview of what PHP is and how it’s used for WordPress themes and plugins, with examples. You’ll go on to learn how to create a PHP file and use it to output HTML.

Screenshot from the course on learning PHP for WordPress

This is a condensed course of just 40 minutes, so you can easily fit it in, no matter how busy you are. By the end of it, you’ll understand the basics of PHP and will be able to do some simple PHP coding.

Watch the Introduction



Take the Course

You can take our new course straight away with a subscription to Envato Elements. For a single low monthly fee, you get access not only to this course, but also to our growing library of over 1,000 video courses and industry-leading eBooks on Envato Tuts+. 

Plus you now get unlimited downloads from the huge Envato Elements library of 440,000+ creative assets. Create with unique fonts, photos, graphics and templates, and deliver better projects faster.

from Envato Tuts+ Code – WordPress

15 Membership Plugins for Adding Members to Your WordPress Site

The landscape of blogging, marketing, and content creation has radically changed over the past several years. It’s caused many content creators to rethink and reimagine monetizing their content.

One of the more popular means is restricting content to a membership-based model—offering their full content to paid members. There are also many approaches to this. Content drips, semester access, and instructional access are just a few ways content creators have found success with membership.

Of course, this is just one of the many ways the membership model is being used. Let’s take a closer look at 15 of the best WordPress membership plugins on Envato Market.

1. WP Private Content Pro

Membership plugins are often used to restrict content or used in situations whereby a content restriction solution makes more sense than more robust membership solutions. 

This is where you’ll find something like WP Private Content Pro to be far more helpful.

WP Private Content Pro

Restrict content by:

  • post, page, or custom post type
  • multiple meta values
  • Guests or Members
  • User Role level
  • User Groups
  • User Roles
  • and more

With back-end private pages for admins, private front-end pages with dynamic content, and private discussions with Admins, you’ll find a toolbox full of great content restriction tools to build a membership-based website.

WP Private Content Pro is powerful, and built so that you can customize it in a way that fits your needs.

2. Ultimate Membership Pro WordPress Plugin

The Ultimate Membership Pro WordPress Plugin is the #1 selling membership plugin on Envato Market for a reason.

Ultimate Membership Pro WordPress Plugin

„Ultimate Membership Pro is the well known and the best Membership WordPress Plugin that allow you to create and work with multi-level exclusive access for your Users based on simple Free packages or Payed packages.“

Protect your:

  • URL
  • pages
  • menus
  • images
  • products
  • categories
  • content sections
  • redirects and more

This robust membership plugin integrates with the top payment and checkout systems, membership management tools, email marketing tools, and so much more.

Ultimate Membership Pro WordPress Plugin doesn’t hold anything back as it delivers one of the most robust WordPress membership plugins you’ll find, boasting a whopping 35 included addons.

3. WooCommerce Membership

If you like WooCommerce and content drips, look no further than the WooCommerce Membership plugin for adding members to your WordPress site.

Easily restrict access to posts and pages on your website and start selling memberships with WooCommerce, today.

WooCommerce Membership

Features include:

  • create an unlimited number of membership plans
  • manage members with the easy-to-use admin
  • full access restriction control
  • build content drip feeds
  • custom expiration date
  • and more

Manage your memberships with WooCommerce and reap all the benefits of using the most popular eCommerce platform for WordPress.

WooCommerce Membership is one of the best ways to transform WooCommerce into your very own membership website.

4. ARMember – WordPress Membership Plugin

Introduce unique user profiles and integrate BuddyPress into your membership WordPress site with the ARMember – WordPress Membership Plugin.

With one-click social member signup and a handy membership setup wizard, you’ll be up and running with your membership WordPress site quickly.

ARMember - WordPress Membership Plugin

Some features include:

  • set up custom grace periods for late or failed membership payments
  • upgrade/downgrade membership levels
  • invite-only membership signup
  • major payment gateways
  • major email marketing
  • create drip content
  • and much more

You can also integrate with BuddyPress, bbPress, WooCommerce, Visual Composer, AfiiliateWP, and more

ARMember – WordPress Membership Plugin is more than just about restricting content, it’s about adding members to your WordPress site.

5. Youzer – WordPress Community & User Profiles New Era

Of all the membership plugins on this list, Youzer – WordPress Community & User Profiles New Era focuses on community and user profiles the most.

In the simplest terms, it’s like Facebook.

Youzer - WordPress Community  User Profiles New Era

Features include:

  • social media features for members to interact
  • customizable membership profiles
  • interactive membership „wall“
  • multiple pre-built layouts
  • 20+ profile widgets
  • and much more

The features and options included with this plugin easily outweigh others.

If you want to start adding members to your WordPress site with a Facebook, social media type experience, you need to check out the Youzer – WordPress Community & User Profiles New Era plugin.

6. Ultimate Private Member Portal

The Ultimate Private Member Portal offers a nice mix of private content restriction, along with the ability for interaction between users and the administrator.

Ultimate Private Member Portal

„Administrators can share various kind of private data with users and get instant feedback all in one place.“

Features include:

  • private file sharing with admin
  • back-end private portals
  • private front-end portal
  • and more

Customize the private portal with custom tabs, creating an easy-to-use interface for members.

Members cannot communicate with one another, but members can freely—and privately—interact with the Admin. The Ultimate Private Member Portal is the perfect solution for the student/instructor type of siloed interactions. 

7. WPDigiPro WordPress Membership Plugin for Selling Digital Products

Selling digital products online and memberships?

Take a closer look at the WPDigiPro WordPress Membership Plugin for Selling Digital Products plugin.

WPDigiPro WordPress Membership Plugin for Selling Digital Products

A great plugin for:

  • membership sites
  • web agencies
  • theme shops
  • plugin shops
  • hybrid shops
  • and more

Restrict any WordPress page based on membership, set up recurring payments, add license keys, and take advantage of other useful features for mixing both digital downloads and membership-based services.

The WPDigiPro WordPress Membership Plugin for Selling Digital Products is a great solution for selling digital products along with offering members access to your WordPress site content.

8. WP Membership

A list of membership plugins for your WordPress site would not be complete without WP Membership. When it comes to adding members to your WordPress site, this plugin provides all the right tools in all the right ways.

WP Membership

Some of the more useful features include:

  • the ability for members to upgrade, downgrade, and cancel their own subscription
  • PayPal and Stripe gateways with one-time and recurring payments
  • both free and paid trial memberships
  • public and private user profiles
  • MailChimp support
  • and much more

Fully responsive, including templates, and translation ready, this is ready to be customized to fit your needs.

WP Membership is a stellar membership plugin.

9. UserPro – User Profiles with Social Login

Adding members to your WordPress site to build a community is what UserPro – User Profiles with Social Login lets you do.

UserPro - User Profiles with Social Login

„Create beautiful front-end user profiles and community sites in WordPress using UserPro.“

Features include:

  • integrates with WooCommerce, BuddyPress, and others
  • custom login and registration forms
  • multiple member list displays
  • newsletter integration
  • content restriction
  • verified accounts
  • user badges
  • and more

While most membership community plugins try to be like Facebook, this membership plugin feels far more unique in its approach.

UserPro – User Profiles with Social Login provides everything you need to set up a community website.

10. User Profiles Made Easy – WordPress Plugin

User Profiles Made Easy – WordPress Plugin makes user profiles easy!

This is a full-featured front-end profile, login, and registration plugin for your membership-based WordPress site.

User Profiles Made Easy - WordPress Plugin

Features include:

  • fully searchable membership directory
  • beautiful custom profile pages
  • unlimited custom fields
  • 21 free add-ons
  • and more

Of all the membership plugins adding members to your WordPress site, this provides the best directory experience.

User Profiles Made Easy – WordPress Plugin is one of the best ways to build an online membership directory.

11. AR hive Membership Autoresponder Integration WordPress Plugin

Connect your favorite membership WordPress plugin with your favorite email marketing solution with AR hive Membership Autoresponder Integration WordPress Plugin.

This is easily my favorite „membership plugin that’s not actually a membership plugin“ plugin.

AR hive Membership Autoresponder Integration WordPress Plugin

Some of the top features include:

  • supports 15 of the most popular email marketing solutions
  • easily integrate with your membership plugin
  • easy to set up
  • and more

With the AR hive Membership Autoresponder Integration WordPress Plugin, easily add your new members to your autoresponders for a series of welcome messages, a strategic content drip, or whatever you like.

12. Frontend User Pro

Frontend User Pro is easy to use, packed full of useful features, and provides you with the tools to build a solid membership WordPress site.

Frontend User Pro

„Frontend User Pro is complete Membership and Frontend User Management Plugin, which comes with tons of features…“

Features include:

  • autoresponder
  • API, hooks, and filter
  • unlimited membership levels
  • one-time and recurring payments
  • bbPress and BuddyPress support
  • conditional logic and conditional menu
  • content restrictions and redirect content page
  • drag-and-drop registration form with many features
  • and much more

If you’re looking to customize and level up your membership login and registration, you need to give Frontend User Pro a closer look.

13. SUMO Memberships – WooCommerce Membership System

SUMO Memberships – WooCommerce Membership System is a comprehensive WooCommerce membership plugin that allows you to easily sell memberships with WooCommerce.

SUMO Memberships - WooCommerce Membership System

„…Sell Memberships from your existing WooCommerce Shop and give access to members to view pages, view posts, content blocks, buy certain products etc.“

Features include:

  • default membership plan during account signup
  • members can pause or cancel their own plan
  • full site admin membership management
  • transferable membership plans
  • and much, much more

The ability to give access to particular products based on membership level is one of the more curious features I’ve seen.

The SUMO Memberships – WooCommerce Membership System is an impressive WooCommerce membership plugin.

14. PrivateContent – Multilevel Content Plugin

Control and restrict almost every aspect of your website content with PrivateContent – Multilevel Content Plugin. Quickly and easily transform your WordPress membership site into a multilevel membership platform.

PrivateContent - Multilevel Content Plugin

Some of the great features you’ll find:

  • developer API and hooks
  • user management and tracking
  • unlimited forms and unlimited user levels
  • restrict menu items, comments, widgets, posts, pages, and more

You can even lock down your entire website with a single click.

With its native Google Analytics integration, the PrivateContent – Multilevel Content Plugin is a serious contender.

15. WP Ultimo – Easily Create a Premium Network of Sites

Finally, the WP Ultimo – Easily Create a Premium Network of Sites is one of the most powerful membership plugins. This is a WordPress membership plugin that gives you the ability to create a network of membership sites built on a WordPress Multisite.

WP Ultimo - Easily Create a Premium Network of Sites

„WP Ultimo is the ultimate tool to create a premium network of websites – like – on your WordPress Multisite install.“

Features include:

  • easy-to-use signup workflow
  • one-click refunds
  • site templates
  • analytics
  • and more

Create unlimited plans, easily create trials and coupons, and connect it with PayPal and Stripe

Build your own membership website network with WP Ultimo – Easily Create a Premium Network of Sites.


When you look through these membership plugins, there are a few things you need to ask:

  • Are you looking for simple content restriction?
  • Are you also selling digital products?
  • Do you need email marketing or do you plan on using drip content?
  • Do you want to create a community or build a directory?

If you can clearly answer these questions—or at the very least prioritize these—you’ll be well on your way to finding the right membership plugin for adding members to your WordPress site.

Envato Market also offers a variety of solutions, so if you’re considering coding your own solution, you can use one of the many helpful WordPress Code TutorialsCode Courses, or eBooks available on Envato Tuts+.

from Envato Tuts+ Code – WordPress

20 Essential WordPress Utilities to Manage Your Site

Though WordPress is incredibly flexible and offers loads of
features, there is still a lot of room to improve basic and critical
functionality, and the best way to do so is with utility plugins.

With thousands of options available, however, it can be quite
difficult sorting the good from the not so good. In addition, you need to be very
selective when deciding on what kinds of plugins you want to use because each
plugin added to your site can decrease the load speed of your pages. More plugins also increase the likelihood of scripting conflicts.

With all these issues in mind, I’ve compiled a list of 20
essential WordPress utility plugins available at CodeCanyon to help take your
site from good to great.

1. WPBakery Page Builder for WordPress

WPBakery Page Builder for WordPress, formerly Visual Composer, is an easy-to-use
drag-and-drop page builder that will help you create any layout you desire quickly
and easily.

The page builder
comes bundled with two types of editors, a front-end editor and a back-end editor, so
that you can use your preferred method of working. That means you can create your WordPress website
with the back-end schematic editor or move your page building process to the front end and see your results live.

WPBakery Page Builder for WordPress

Other great features

  • full control of
  • an intuitive drag-and-drop interface
  • video and parallax
  • multilingual enabled
  • and much more

User TenkaraGrasshopper

“I love my WPBakery
plugin! Using this plugin makes editing and designing pages amazingly easy and
fun. And best of all you don’t need to know any additional coding to make your
pages look great.”

2. Yellow Pencil

Yellow Pencil is a WordPress CSS style editor
plugin which allows you to customise any theme quickly and easily by editing
it in real time. All you need to do is click on an element you want to modify, start
changing its features visually, and Yellow Pencil will create the required CSS
style codes in the background for you. The plugin provides over 50 style properties to help you modify your

Yellow Pencil

Other great features include:

  • over 500 fonts
  • 300 backgrounds
  • a live colour picker
  • responsive support
  • and much more

User Rob33 says:

“Beautiful plugin,
opens up the world of CSS for lay people. So easy to use, intuitive, clear and
well designed, needs no support. Very safe purchase if you were thinking
about it.”

3. Scrapes

Ever dreamed of having a robot that could blog for you at
any time of the day or night? Well, Scrapes have heard your prayers. The plugin automatically copies content from any
area of the web you choose straight to your WordPress website, in effect
creating a system of auto-blogging for you.

You can program the plugin to copy content once or at chosen time intervals from a single
webpage or from several pages. It can copy content as varied as weather
forecasts, the latest news items, blog and magazine posts, and videos.


Other great features

  • flexible text and
    visual formatting options for copied content
  • access your
    dashboard from any device
  • autoblog content
    with any language character set
  • and much more

User DTrance says:

“A very good and
user-friendly scraping plugin for WordPress. The UI was designed for
non-techies which makes it easy to set up for anyone.”

4. Hide My WP

Hide My WP is a security plugin that hides the fact you’re using WordPress
on your site, which allows you to fly under the radar of attackers that target
WordPress sites.

In addition, their Intrusion
Detection system automatically monitors the site and finds potentially
dangerous requests. It then provides you with all details of the attacker
like who they are, where they’re located, how they’re trying to hack your site,
etc., and suggests whether they should be blocked or not.

Hide My WP

Other great features

  • easily replace any
    words in your HTML output file
  • easily change or
    hide any URL 
  • notify you when
    someone is poking around your WordPress site
  • change
    default WordPress email sender
  • and much more

HelloMandie says:

“If you are serious
about WordPress development, you need to have an excellent security plugin. Not
only is this one of the best out there, but their customer support is
fantastic. When I had issues with my setup, they were quick to help and got it
resolved in a matter of hours.”

5. Ajax Search Pro

If you’re looking for a better search function than the
native one WordPress provides, check out Ajax Search Pro. It’s a live search engine plugin
for WordPress that provides users with customisable front-end settings. 

example, by checking different boxes, the user can change the behaviour of the
plugin to look for exact matches, include or exclude certain post types, categories, etc.

Ajax Search Pro

Other great features

  • four built-in
  • image support
  • custom field filters
  • keyword highlighting
  • and much more

User Gundernak says:

“This is the best
search plugin on the market with the most customizable and multifunctional
search features and logics. You can create totally different search boxes in
your site structure, each with their own options.”

6. Blog Designer PRO for WordPress

If you’ve ever dreamed of designing your own blog but don’t
have the necessary coding skills, Blog Designer PRO for WordPress may be the answer. Unlike the average blog
template, the plugin comes with 36 templates, all of which you can customise
extensively to suit your own design aesthetic.

Blog Designer PRO for WordPress

Other great features

  • fully responsive
    blog templates
  • support of custom
    post type
  • preview of blog
  • and much more

User Cornelsen says:

“BlogDesigner Pro is
an easy-to-use tool that gives the WordPress Blog a modern and beautiful look.”

7. Interactive World Maps

Using maps on your website is a great way to integrate
content with location, and the Interactive World Maps plugin is an ideal choice for doing so. The
plugin allows you to include maps in posts, pages, and even in the sidebar of your

You can choose to
use a map of the entire world, a continent, a country, a region, or a city. You
can also add active colour regions to the map and display them in two different
ways, as regions and as markers.

Interactive World Maps

Other great features

  • ability to add
  • change background
  • change the width and
    height of the map
  • and much more

User AdamNewton

“Really great,
powerful plugin. I’m using it for a very complex project and it’s done
everything that I wanted and more. Support is great with quick and detailed responses
from plugin author​ and also lots of documentation.”

8. Advanced
Google Maps Plugin for WordPress

If the Interactive
World Maps above isn’t quite what you were looking for, then Advanced Google Maps Plugin for WordPress offers another viable option. This is a
great plugin for displaying multiple posts, pages or custom posts on a single
Google map. You can assign a location to your post easily using the meta box or
your own custom fields.

Advanced Google Maps Plugin

Other great features

  • display posts
    information like title, content, featured image, categories, etc.
  • display post listing below the map and show post information in the listing 
  • possible to
    customise HTML easily to integrate your own design
  • display posts or
    locations below the map in grid or list format
  • visitors can switch format on the front end
  • and much more

User Fuelcom says:

“Excellent customer
support. Team resolved all my problems, in a few minutes, during the
installation and the set up of this plugin.”

9. Maintenance PRO

Maintenance PRO is the big brother of the popular and free
Maintenance WordPress plugin. The pro version does everything the basic version
does but takes its functions to a whole new level.

This is a handy
plugin to use when developing a new site as it provides you with a customisable
maintenance mode splash page so that you can give visitors a taste of what they
can be looking forward to when your site is up and running. 

Maintenance Pro is
also great for when you’re making significant changes to your existing site and
need to take it offline for a period of time. One of the plugin’s standout
features is that it allows you to add email subscription fields so you can
start collecting email subscriptions even before your site is completed.

Maintenance Pro

Other great features

  • full-screen HD background
  • customisable text
    and branding
  • unique scheduler
  • social media icons
  • and much more

User Jkaayy says:

“After working with
the basic Maintenance plugin for a while, I decided it was time to take the
next step with Maintenance PRO which is absolutely great if you’re looking to
reach an entirely different magnitude of customization that comes with it. If
you’re in the market for an easy customization of your „503 Error“
page, the Maintenance (and Maintenance PRO) plugin is set to be your perfect

10. Super
Store Finder for WordPress

Store Finder for WordPress
is a great plugin for businesses who want to
help their website visitors and potential customers find their stores easily and
quickly. The plugin is integrated with Google Maps API v3 and has a fully responsive
design for smartphones, tablets, and touch-screen devices.

Super Store Finder for WordPress

Other great features

  • multiple store
    locator layouts to choose from
  • manages unlimited
    store locations
  • full-screen street
    view feature
  • extensive map
    settings to show all stores, specific location, or geo location
  • and much more

User MastroMicio says:

“We’ve used Super
Store Finder on a couple occasions now and we’re very happy with it. The
support is also excellent. This is very robust locator plugin that also has
extensions to add-on. We couldn’t be happier and will continue buying the
plugin for all new customers that need it.”

11. Ajax Translator Revolution WordPress Plugin

Ajax Translator Revolution WordPress Plugin is quite simply an automatic WordPress
translation plugin that allows your visitors to view your website in their
preferred language in a matter of seconds.

The translation bar sits
at the top of the website by default, but you can use the custom positioning
settings to place it wherever you want. The plugin can translate as many as 91
languages and remembers a visitor’s selected language.

Ajax Translator Revolution WordPress Plugin

Other great features

  • over 80 settings for customisation available
  • display languages, flags with names, just names, or just
  • translate everything or selected sections of a web page
  • can exclude entire pages, posts, and categories
  • and much more

User StrictlyKash says:

“Fantastic plugin, works straight out of the box. Very easy
to setup and customize to my liking. Overall I’m very satisfied with my
purchase, if you need a translation plugin, then look no further!”

12. Cornerstone

Cornerstone is a front-end WordPress page builder that allows you to see the changes
you make to your site in real time as you build it. One of the great features
of this plugin is Skeleton Mode, which allows you to see the underlying
structure of your entire page without leaving the front-end interface.


Other great features

  • huge library of ready-made and customisable elements
  • text editing on the fly
  • compatible with any WordPress theme
  • and much more

User Webulosity says:

“Cornerstone is our professional choice over and above all
other WP page building solutions. It works for us in designing and allows us to
transition clients to self managing their content.”

13. Awesome Header

Use the Awesome Header plugin to create sticky navigation and/or
replace your WordPress header entirely. This highly customisable plugin enables
you to have up to three layers of navigation and unlimited colour choices, and it’s very
easy to configure and use.

Awesome Header

Other great features

  • touch-screen friendly
  • ability to add background image or pattern
  • easy to extend and modify using filter and
    action hooks
  • and much more

BroadviewSolutions says:

“Great Plugin. Works as described. First rate support!”

14. Filetrip

The Filetrip plugin makes it easy to distribute files directly from your WordPress
site as it allows your website visitors and clients to easily download any
digital file from your website to Dropbox, Google Drive, or another cloud

You can also
program the plugin to automatically send copies of files uploaded by users to
multiple destinations.


Other great features

  • automatic email
    notification for uploads and backups
  • ability to schedule
    full backup for your website
  • convert media files
    into transferable files
  • and much more

User Tuxton33 says:

“Initially it was pretty confusing to set up because I had
no previous experience setting a Google App and so on but the developer himself
walked the whole process with me and we got it working correctly… it was a
BIG surprise for me and I’m glad I purchased the plugin, it’s exactly what I
need for my business”

15. White Label Branding for WordPress

White Label Branding for WordPress allows developers more latitude in customising
WordPress menus. The plugin allows you to customise the WordPress admin and the
login screen and add a Role and Capability Manager, which allows you to create
new user roles and assign capabilities and decide who has access to what
features of the site.

White Label Branding for WordPress

Other great features

  • ability to add your
    own favicon easily
  • hide certain screen
  • add a private
    dashboard metabox for editors or administrators eyes only
  • and much more

User Migstf  says:

“I’ve been using this plugin for some time, and realised
I’ve never left a review. It might be true that there are other plugins that
have the same feature list, but none do it as well or as easily as WLB. The developer
is also really responsive with issues (although there aren’t many!).”

16. Ultimate
Author Box

The Ultimate
Author Box
plugin is a great way to
celebrate the authors who write for your blog. The plugin allows you to add an
author box to each post to identify the author and provide additional
information about them.

You can add extra
tabs to highlight the author’s other posts, social feeds, or other custom
content like a contact form. The plugin
comes with over 19 predesigned author box templates.

 Ultimate Author Box

Other great features

  • ability to set role
    restrictions for author boxes
  • over 20 social media
  • author summary in
    pop-up display
  • unlimited custom
    colour scheme customisation options
  • and much more

User PedroVivo says:

“This is a really good plugin if you want to add an author
box to your blog. You can customise it and customer service is excellent in
case you have a problem or have any query about the product.”

17. WP Contacts 

Use WP Contacts to manage, log, track
and share your contacts on any page of your site you choose. The plugin
facilitates front-end login, and the contact database is highly customisable.

WP Contacts

Other great features include:

  • drag and drop function
  • responsive and
    ready for all of your devices
  • ability to multi-select and delete entries
  • and much more

User Cavtec says:

“This really is the database you are looking for! It is so
versatile and flexible that it can fit almost any situation. The support of the
plugin is also worth a mention. Prompt, detailed and not condescending.”

18. Custom
Page Templates

Page Templates
allows you to override your theme design and create a unique page template for your WordPress
website. The plugin has an enormous amount of flexibility and gives you
complete freedom to control precisely where and when your changes will be

Custom Page Templates

Other great features

  • over 30 shortcodes
  • ability to work with
    any plugin
  • support for popular
    plugins like Visual Composer, WooCommerce, etc.
  • and much more

User Fearless_Mode says:

“This plugin is extremely well thought out. Definitely one
of my favorite purchases of all-time. The options available from the
„Dynamic Values“ is like candy to a developer or someone who just
really wants to override the theme’s templates in the most fun, transferrable
way. Support was superb and direct.”

19. Out-of-the-Box

Want to share
photos, videos, or other files with your customers, clients, friends, and fans
directly from your website without eating up your bandwidth? Say hello to Out-of-the-Box, a Dropbox integration plugin for WordPress
that allows you to display your Dropbox files on your website. This responsive
plugin is also multilingual ready.


Other great features

  • audio and video
  • smart loading to
    save time and bandwidth
  • ability to search
    files by name or contents
  • and much more

User JRichardson47 says:

“This is a great plugin. The design looks good, it has many
useful features and it’s easy to implement. But where they really won me was
with their excellent support.”

20. Reviewer WordPress Plugin

Reviewer WordPress Plugin offers you a great way for visitors,
customers and clients to leave reviews on your site. What’s more, the plugin
also allows you to add comparison tables inside your WordPress blog posts,
pages, and custom posts.

Reviewer WordPress
plugin offers a good range of customisable themes so that you can adapt your
reviews and comparison tables to fit your site, and each theme has a responsive
layout to adapt to any devices.

Reviewer WordPress Plugin

Other great features

  • review box and user
    review widgets
  • three different rating modes
  • ability to collect visitor name and email
  • Google ReCaptcha for preventing spamming
  • and much more

User TheoMill says:

“Reviewer plugin is a nice tool to add customer reviews to
your WordPress website. It’s easy to set up and has good review management
options. A special word for the customer support: I ran into a plugin compatibility issue and the author was available within a short time to help and fix it.“


These 20 plugins just scratch the surface of page layout
plugins available at Envato
. So if none of them catch your fancy, there are plenty of other
great options there to hold your interest.

And if you want to improve your skills building WordPress
sites, check out the ever so useful free
WordPress tutorials
 we have on offer.

from Envato Tuts+ Code – WordPress