Black Friday & Cyber Monday sale, save 30%! Valid until November 30th at 11:59:59 PM (UTC - 6). Enter BFCM2015 at checkout or Click here to apply discount →

Custom Taxonomy Friendly Archives

I do not write about themes very often, but I have just published a tutorial over at WP Explorer on how to ensure that your theme’s archive files work well with custom taxonomies. As a plugin developer, I get frustrated at times when I have a plugin that utilizes custom taxonomies and I get support…


Build a Search Logging Plugin

Knowing what your users are searching for can be extremely useful and important. In this members-only tutorial we’re going to look at how to create a simple search logging plugin that will record every search query performed on your site. We will be using the WP_Logging class that I released a week or two ago…

Hide wp-login.php with Restrict Content Pro

With membership sites, it is very common that admins want to hide the default WordPress login screen and force users to go to a custom, front-end login page instead. Restrict Content Pro has an option that makes this really simple to do. This entry is part 7 of 22 in the Customizing Restrict Content Pro…

Stripe Integration Part 8 – Working with Invoices

The Stripe invoice system allows us to easily add charges to our existing customers subscriptions, such as one time sign up fees, extra monthly charges for new features, or anything else. Just like every other feature in the Stripe API, it’s extremely simple to use, and in this part of the Stripe Integration tutorial series…


WP_Logging – A General Use Logging System for WordPress

WP_Logging is a general use logging system that I have written for WordPress. It was first written for my Easy Digital Downloads but I have adapted it for general use. The main idea behind the class it to provide a simple solution for logging events, actions, errors, etc, inside of your WordPress plugins or themes.

I Wrote Some Really Dangerous Code

Sometimes when looking back at something I wrote in the past, perhaps two years ago, I discover some really terrible code I’ve written. Some of it is simply poor quality with really bad formatting, and some of it is outright dangerous from a security point. This evening I discovered some of that “dangerous” code inside…

Making PHP Variables Available to Your JS

If you have ever written a plugin that uses any form of Javascript, you will probably have come across the problem of passing configuration options from PHP to Javascript. Take an image slider plugin, such as Soliloquy for example: most likely there is a settings page of some kind that lets the user set the…

User Follow System – Part 3

In the previous part of Creating a User Follow System, we looked at the basic shell functions that we need to write for our plugin to function. Now we are going to get into actually writing those functions. We will go one by one and write each one from scratch. Also note that we will…

User Follow System – Part 2

Part 1 of the User Follow System series looked at laying out the main structure of the plugin. For part 2, we’re going to continue that and lay out the main skeleton functions that we need for our plugin. These will include the functions for following a user, unfollowing a user, checking if a user…

Writing a Simple Google Maps Short Code

In this advanced tutorial we’re going to walk through the process of creating a simple short code to display Google Maps. The concept is simple, but we’ll be using advanced techniques and tools for displaying our maps. All maps will be cached using transients and all requests to Google’s API services will be done with…

Screenshot from 2012-09-23 15:06:00

Deliver Automatic Updates for Your WordPress Products

If you are selling WordPress themes or plugins, one of the number one things you should absolutely consider implementing into your products is automatic upgrades. If avoidable, there is no reason a user should be forced to manually log into your site and download a new version, then log into their own site and upload…


Error: Please enter a valid email address

Error: Invalid email

Error: Please enter your first name

Error: Please enter your last name

Error: Please enter a username

Error: Please enter a password

Error: Please confirm your password

Error: Password and password confirmation do not match