Why You Should White Label WordPress (And How to Do It)

Disclosure: Your support helps keep the site running! We earn a referral fee for some of the services we recommend on this page. Your support helps keep the site running! We earn a referral fee for some of the services we recommend on this page. Learn more

Sharing is caring!

0 shares







Last Updated on August 4, 2019

You know that WordPress coupled with a powerful theme framework is the best way to run a website.

The problem is, when you create websites for people who aren’t tech savvy, the clutter–WordPress branding, RSS feed links, and much more–confuses people.

To prevent this, I customize my client’s WordPress installations to create a better user experience, and in the remaining part of this article, I’ll show you how I do it.

White Labeling WordPress

White-labeling WordPress goes beyond removing dashboard widgets and replacing WP logos with your own. That is where it begins, but it oftentimes requires a bit more “customer service creativity” to provide your clients with the best overall experience. The following is a list of white-labeling solutions that I believe offer my clients that extra bit of awesomeness. I’m hardly an advanced developer, so these examples should be easy enough for those with at least a working knowledge of WordPress theme development.

For this tutorial I’ll be using the Thesis Theme to illustrate my code and examples. If you are not using Thesis, functions.php is where you’ll drop the code, not custom_functions.php.

As you read on, many of you may ask, “aren’t there plugins to take care of much of this?” — and the answer is yes. In fact, much of the code below is created from digging into a variety of plugins and tweaking them to suit my needs. However most of these customizations require very little code, and it makes more sense to include them all into one reusable file than to have several plugins being called at once.

Rebrand The WordPress Login Page

This is an obvious one, but in my opinion you should NEVER hand over completed contract work without replacing the default WordPress logo with your client’s logo. Add this snippet of code to custom_functions.php template.

/**REBRAND WP LOGIN**/ function my_custom_login() { echo ''; } add_action('login_head', 'my_custom_login'); function new_wp_login_url() { echo bloginfo('url'); } function new_wp_login_title() { echo 'Powered by ' . get_option('blogname'); } add_filter('login_headerurl', 'new_wp_login_url'); add_filter('login_headertitle', 'new_wp_login_title'); /** END REBRAND WP LOGIN **/

Now just create custom_admin.css and add the following code to it:

#login h1 a {background: url(images/my_sweet_sweet_logo.jpg) no-repeat; width: 326px; height: 67px;}

Adjust the height and width as necessary, but the width should remain close to 326px in order to fit nice and tidy.

Custom WordPress Login Area:



Rebrand the WordPress Admin

The three areas that I like to customize are the WP icon and “howdy” text in the header, as well as the “Thank you for creating with WordPress” text.

Replacing the WordPress Logo

First, replace the WP logo in the admin header with your client’s logo. Add this bit of code to custom_functions.php:

/**REPLACE WP LOGO**/ function custom_admin_css() { echo ''; } add_action('admin_head','custom_admin_css'); /**END REPLACE WP LOGO**/

Next, you’ll just want to add this bit of code to custom_admin.css:

#header-logo {background-image: url(images/client_logo.jpg);}

Logo Example:



Rebranding the WordPress Footer

Second, Rebranding the Admin Footer. I like to add my business’s signature here, but since WordPress and Thesis are the real champions, I also want to give them credit as well. Add this to your code:

/**REPLACE FOOTER TEXT**/ function filter_footer_admin() { ?> Coerced by <a href="#">Secret Stache Media</a> | Built with <a href="http://wordpress.org">WordPress</a> and <a href="http://diythemes.com">Thesis</a> <!--?php } add_filter('admin_footer_text', 'filter_footer_admin'); /**END REPLACE FOOTER TEXT**/

Footer Example:

You’ll notice that I did not wrap the above text in <p> tags. This is because we are replacing content that is already within <p> tags. If you were to add them, you’ll break the layout a bit.

Removing “Howdy” From WordPress

Third, replacing “howdy” with something less, ‘erm…lame. This comes directly from the amazing Ozh’s plugin, “No Howdy!”. I agree with Ozh that it is total overkill, but it has it’s benefits from time to time. You can download it as a plugin, but let’s add it to our custom_functions.php template:

/**REPLACE HOWDY**/ // Customize: $nohowdy = "Welcome Back"; // Hook in if (is_admin()) { add_action('init', 'ozh_nohowdy_h'); add_action('admin_footer', 'ozh_nohowdy_f'); } // Load jQuery function ozh_nohowdy_h() { wp_enqueue_script('jquery'); } // Modify function ozh_nohowdy_f() { global $nohowdy; echo << //<![CDATA[ var nohowdy = "$nohowdy"; jQuery('#user_info p') .html( jQuery('#user_info p') .html() .replace(/Howdy/,nohowdy) ); //]]> JS; } /**END REPLACE HOWDY**/

No Howdy Example



Remove Unnecessary Dashboard Widgets

I find the dashboard widgets to be a huge distraction for clients, and more often than not I’ll remove everything except for “Right Now” and “Recent Comments.” Drop the following into your custom_functions.php:

/** REMOVE DASHBOARD WIDGETS **/ function remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); remove_action( 'wp_version_check', 'wp_version_check' ); remove_action( 'admin_init', '_maybe_update_core' ); add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) ); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets' ); /** END REMOVE DASHBOARD WIDGETS **/

You’ll notice that I’ve commented out the action to unset the “Recent Comments” and “Right Now” widgets as to keep them active. If there are others that you feel are important to your client, you can easily content them out as well.

Create Custom but “Useful” Dashboard Widgets

If you are going to spend the time to eliminate the clutter, be sure to only recreate dashboard widgets that are beneficial to the client. A mere “welcome” widget, in my opinon, offers nothing of real value. When I add a custom dashboard widget it is to provide general tutorial resources. Many clients will not update the site on a regular basis and adding links to written and video tutorials is a great way to push them in the right direction. Below is an example of a widget I might use:

Custom Dashboard Example:



Add the following snippet of code to create it:

/** INSERT CUSTOM DASHBOARD WIDGETS **/ function tutorial_dashboard() { ?>

Adding Images

From the Post or Page Edit Screen look for the Icons to the right of “Upload/Insert.” Click on the first Icon and follow the instructions on screen

Adding Gallery Images

Adding Gallery Video Tutorial

Cheat Sheats

Download a Hard Copy of the WordPress Cheat Sheat

WordPress Admin Menu Management

Up until now, I have been adamant about creating a reusable custom_functions.php file (functions.php for non Thesis sites), as opposed to using plugins. However, when it comes to modifying menu items (created not only by WordPress but also by themes and plugins) it is far easier to use Menu Editor Pro from WP Plugins. It is a premium plugin, but at $7.00 it is well worth the investment. Menu Editor Pro allows you to re-sort, rename, hide, delete, and create menu items. Usage is very straight forward so I’ll focus on the strategy instead.

Renaming WordPress Menu Items

I’m sure you can think of your own reasons for renaming a menu’s title, but some of the changes I’ve made are from “posts” to “articles”, “thesis” to “framework.” I’ll also rename any plugins that create a top level menu and use their brand name in the title. No offense at all to the plugin developer, I just want to keep my menus clean and consistent.

Re-sorting WordPress Menu Items

Often times plugins will create a top level menu item, but it will be stuck to the bottom of the list. I tend to like to group things together based on relevance, and if a particluar item has more value near the top I’ll re-sort it to a more appropriate position.

Removing WordPress Menu Items

Sites that do not have a blog or do not allow comments shouldn’t have those options taking up space. If you know they won’t need it at all, eliminate it from view. You can always add it back if they need it in the future. Also, when using one of the many premium themes or frameworks available as a starting point I will ALWAYS remove the sub menu item “Buy Themes.” Give credit where credit is due, but I don’t believe it should be there in the first place if you own a developer’s license. And let’s be honest, if you are doing client work, you should own the developer’s license.

Adding Custom WordPress Menu Items

There is so much potential to overuse this option, but I find that adding a webmaster menu item can be very beneficial. I’ll typically add a menu item with my brand “Secret Stache” and create a few sub-menu options such as:

1. “Invoices” using the plugin’s iFrame option to pull in my freshbooks invoicing account.

2. “Survey” also using the plugin’s iFrame option to pull in a client survey created in google docs. I’d love to use Gravity Forms here, but unless I’m mistaken a front-end page must render for the template tag to work.

3. “Review on yelp.com” which links to my business page on yelp.com

4. “Contact Webmaster” which opens the user’s email client, subject line pre-filled.

None of these additions are necessary, and that’s the point. I believe strongly that providing your clients with an over the top package will result in return business and great word of mouth testimonial. And by setting everything up in a reusable template, you aren’t even spending much more time on it.

Download Example

.txt

functions.php

custom_functions.php

[download id=”5″] The file above has all the code from the examples show in this post. The file is afile. If you want to use it you will need to add the code within the file to youror

Please feel free to add your white-labeling practices in the comments below. Also, I put together this list of functions over the course of a few years. I would like to give credit to any plugin authors I have absorbed the code from, but I honestly cannot remember from who and where most of it originated. Please drop a line in the comments if a portion of this looks familiar and we will credit the source.