Get $500+ of the best After Effects files, video templates and music for only $20!
Customizing the WordPress Dashboard For Your Clients

Customizing the WordPress Dashboard For Your Clients

Tutorial Details
  • Program: WordPress
  • Version (if applicable): version 3.1 & up
  • Difficulty: Easy
  • Estimated Completion Time: 15 minutes
This entry is part 3 of 6 in the series WordPress Dashboard Customizations

Have you recently started using WordPress for your client’s project and want to further impress your client with better packaging? This article will focus on packaging WordPress so that, in just few minutes after completion of a project, it will feel more unique to the client and not have the generic feel.


A great product comes with great packaging. When you develop a website for your client, packing it well adds the additional feel good factor. Most clients don’t understand the efforts that you have put into creating a dynamic website, or the 1000 lines of code that you have written to create a custom plugin. All they care about is what they see.

WordPress out of the box is well designed & looks as good as any commercial product. Few extra touches would further make it more personal to the client instead of looking general. This article will focus on packaging WordPress better in just few minutes after completion of a project to make it feel more unique to the client and not have the generic feel. Without going into the detailed explanation of WordPress core functions, we will only focus on quick customization.


3 ways to perfectly end a WordPress project before handing over to your client

“All they care about is what they see.”

  1. Remove and replace generic elements like WordPress Logo, Footer signature
  2. Remove unwanted sections from WordPress Dashboard
  3. Install plugins to optimize website & make it more fast & secure

 


Step 1.1 Customize Login Page Logo

WordPress Login Page

When a client wants to access the WordPress admin, the first thing they will notice is the login page with a WordPress logo. Wouldn’t it be better if this page had the logo of your client’s company or maybe yours? There are many simpler ways to do this using plugins that allow other customization options too. But I personally prefer setting this using the powerful WordPress functions.php file. 

If you have a functions.php in your custom theme, open it and if not, create a file named funtions.php and place it inside the theme folder.

Add below lines in the functions.php file:

// CUSTOM ADMIN LOGIN HEADER LOGO

function my_custom_login_logo()
{
	echo '<style  type="text/css"> h1 a {  background-image:url('.get_bloginfo('template_directory').'/images/logo_admin.png)  !important; } </style>';
}
add_action('login_head',  'my_custom_login_logo');

Note

The path "images/logo_admin.png" is relative to the main theme folder and needs to be changed based on the location of your logo image. Make sure to have additional white space in the image below the logo, otherwise the warning message might touch the logo. Now as you can see with just a few lines, we are able to customize the logo of the login page without the need of a plugin. WordPress is very modular software with thousands of functions if not more. We can hook into any function and modify the default settings through the use if a functions.php file or through plugins. Using the above code we have simply used the hook login_head() and added our own function to it. Similarly you can even further and add your own stylesheet to the login page.

WordPress Login Page Logo Customization

Step 1.2 Customize Login Page Logo link & ALT text.

If you click on the logo on the login page, it will take you to www.wordpress.org. The alt text of this link is “Powered by WordPress”. Using the same functions.php file we can now modify the link and the alt text to anything we want.

// CUSTOM ADMIN LOGIN LOGO LINK

function change_wp_login_url()
{
	echo bloginfo('url');  // OR ECHO YOUR OWN URL
}add_filter('login_headerurl', 'change_wp_login_url');

// CUSTOM ADMIN LOGIN LOGO & ALT TEXT

function change_wp_login_title()
{
	echo get_option('blogname'); // OR ECHO YOUR OWN ALT TEXT
}add_filter('login_headertitle', 'change_wp_login_title');

In earlier example, we used add_action and in above example we used add_filter. What’s the difference? Well both are WordPress hooks, only difference is that we used add_action for large functions and add_filter to modify text before its sent to the database or the browser.

 


Step 1.3 Customize Dashboard Logo

WordPress Dashboard Logo Customization

 

Once we login and are in the backend of WordPress, there is another small logo of WordPress displayed on top. It’s small but if you wish to change it, then add below code to the same functions.php file we created in above step.

// CUSTOM ADMIN DASHBOARD HEADER LOGO

function custom_admin_logo() {
	echo '<style type="text/css">#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/logo_admin_dashboard.png) !important; }</style>';
}
add_action('admin_head', 'custom_admin_logo');

As you can see, the format is almost same as we used to change login page logo. Only thing that changes is the hook. In this case we are adding our function in the admin_head() hook.

 


Step 1.4 Customize WordPress footer

In the footer of WordPress backend, you would notice this link “Thank you for creating with WordPress. • Documentation  • Freedoms • Feedback • Credits”. WordPress deserves all the credit we can ever give for making such a wonderful piece of application. However for those of you who want to one step further and modify this we have another WordPress hook to our rescue.

// Admin footer modification

function remove_footer_admin ()
{
	echo '<span id="footer-thankyou">Developed by <a href="http://www.designerswebsite.com" target="_blank">Your Name</a></span>';
}
add_filter('admin_footer_text', 'remove_footer_admin');

You can add your own website link and name and also any other links you wish such as link to support website, or your email address.

 


Step 2 Removing the sections from dashboard which your client’s do not require

In the WordPress dashboard, you will notice many sections such as, Plugins, WordPress news, etc.

WordPress Dashboard Customization

 

Do your clients really need to see details of new plugins, WordPress News & Blog Updates? Am sure hey are better off without seeing all these things.
The sections are added using the wp_dashboard_setup() hook and same can be used to remove them. Simply copy paste the below code in your functions.php file to get rid everything except the most required sections.

// REMOVE META BOXES FROM WORDPRESS DASHBOARD FOR ALL USERS

function example_remove_dashboard_widgets() {	// Globalize the metaboxes array, this holds all the widgets for wp-admin	global $wp_meta_boxes;	
	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);} add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );

This function can also be extended to add new boxes or to remove the boxes such as “Incoming Links”, “Quick Press” and others.

 


Step 3 Further optimizing & securing using plugins.

WordPress has more than 15,000 plugins. Now if you wish to experiment, you would be better off doing it on your own website and not that of your clients. Below are list of plugins organized in different categories that I have used for almost every single project I have made in last 12 months.

General Security & Backup

  1. Login LockDown - A decent plugin that improves the security of your WordPress site by limiting the number of failed login attempts from a given IP range.
  2. WP-DBManager - Useful for Database optimization and backup. It also can email a copy of database after each backups.
  3. IDrive - The best & cheapest backup plugin. This plugin is offered for free by the folks of IDrive. The plugin backs up your WordPress core files, uploads & database daily to IDrive servers.

General Purpose

  1. Delete-Revision - Very useful and allows easy deletion of multiple revisions.
  2. 404 Notifier  - Easy way to get a list of 404 errors from your WordPress admin. You probably would not need this plugin forever, but its useful to install it when launching a new project.
  3. WordPress Import - Always better to install and activate this plugin. This is a required plugin when you want to import WordPress data.
  4. Velvet Blues Update URLs - A really handy plugin useful when we move WordPress site to different server. Without using PHP MyAdmin, users can change reference of all URL’s in the database to the new URL.

Optimization & Caching

  1. WP Super Cache - Simplest Cache plugin. Has more options for advanced user, but the plugin requires no custom setup and can be used by even beginners to optimize the speed of their website
  2. WP Minify - This plugin in combination with above plugin can have a huge impact on your website. If you use tools like Google’s PageSpeed and Yahoo’s YSlow, you will see considerable impact on the performance of your website
  3. WordPress Gzip Compression - This also helps in compressing your website, but make sure your server is compatible as the plugin causes issues on some hosting accounts.

Analytics & SEO

  1. All in one SEO - This is the most used SEO plugins. If you do not wish to develop your own SEO features for your client, this plugin can be very helpful to add Meta tags to your website dynamically.
  2. Simple Google Sitemap - Basic plugin that creates XML sitemap and submits to Yahoo, Google & Bing search engines.
  3. Google Analyticator - Allows us to see Google Analytics data directly in the WordPress admin. Very useful for client projects, as Analytics does help & inspire anyone to make their websites better.
  4. PostRank - Free plugin from the company “PostRank” which was recently bought by Google. The plugin allows you to see a rating for your post based on how its shared over social sites like Twitter, Facebook, etc.

Other Advanced plugins to further customize WordPress

  1. Adminimize - Allows us to remove unwanted links & content from the dashboard. Perfect for websites developed for clients.
  2. Admin Menu Editor - Same as above but focused on Menus. I have developed websites using WordPress that does not have a blog, and this plugin has come in handy to hide the “Posts” menu.

Conclusion

At the end, if the project cost permits, try generating a report of your clients website using http://gtmetrix.com/. This website allows us to generate report using Google PageSpeed & Yahoo’s YSlow tools. Hard to get a score of 100, but if your website is properly developed and does not use lot of external scripts such as 3rd party live chat plugins, then getting a score about 80, would not be difficult.

In this article we just briefly covered the customization options. Just like any other software the more you dig in, you would love WordPress.

Do you have any other ways to further customize WordPress? Share with us.


Other parts in this series:12 Useful Customization and Branding Tweaks for the WordPress DashboardHow to Create Custom WordPress Write/Meta Boxes
Add Comment

Discussion 61 Comments

  1. Jason Pelker says:

    How do you remove third-party widgets, i.e. Yoast’s news widget that displays when you install his SEO plugin?

    • When the news widget comes up on the dashboard it says “The Latest from Yoast” on the bottom righthand corner of this news widget you will notice an “X”.

      Click on the “X” and you will see:
      “If you reload, this widget will be gone and never appear again, unless you decide to delete the database option ‘wpseo_yoastdbwidget’.”

      The news widget will be disabled unless you reactivate again in the database

    • Harish says:
      Author

      I am glad you liked it

  2. Lucas says:

    This was just what I needed! Great job! Way to be a mind-reader. :)

  3. Zee says:

    Great article, I am not developing for clients and still found this article to be very useful

  4. Myke says:

    *Bookmarked. Super valuable information here. Can’t believe I didn’t know of the Velvet Blues Update URLs plugin.

  5. Piet says:

    Great write-up, thanks!

    Would it not be better to use stylesheet_directory instead of template_directory for the different images on the login page and in the Dashboard?

  6. Henri says:

    Very useful..!

    This keeps me love more to wordpress..

  7. Zuzuleinen says:

    Great article,

    Another way to customize the wordpress admin for clients is by using Wp Simplify plugin http://wordpress.org/extend/plugins/wp-simplify/ .

  8. Techeese says:

    title is a bit misleading

    should be:
    customizing wp backend for your clients

  9. Paul Garner says:

    There is a great plugin on CodeCanyon that allows you to brand the admin interface completely and choose your own colors etc http://codecanyon.net/item/wordpress-admin-colors-branding/468919

  10. This was nice. I always tend to forgot how many good plugins there are out there. Thanks!

  11. This is a great write up and what we do we all of our clients as well. A good rule to go by is “if the client is not going to use it or will be confused by it, do not make it viewable to them”

  12. Doug says:

    Excellent tips! Never even thought of touching the WordPress logo on the login page – that’s a great touch. I usually go ahead and set up Askimet for clients as well.

  13. Adam Scott says:

    I always add a news feed widget to the dashboard that puts in my latest blog posts. That way the client always stays connected to me. They can always hide it if they want.

    One of my old blog posts shows you how to do it: http://adamscottcreative.com/add-your-own-news-feed-to-wordpress-dashboard/

  14. drhodes says:

    Does having all those plugins installed that affect the admin slow down the front end? I don’t have much experience with plugins that are geared toward customizing the admin.

  15. krapan88 says:

    полезно. особенно в плане переделки страницы входа в админку

  16. Terence says:

    Will these be reset when you update WP to the latest version?

    • Japh says:

      Because they’re done in the functions.php file of your theme, or possibly as part of a plugin, and not modifying core WordPress files (which you should never do) then they will work even after an update to WordPress.

  17. osmancan says:

    Hi, thanx for article.
    I wonder which plugin is using for s3 account on tutsplus.
    I’m using tantan-s3 but its not good for clients.

  18. Javier says:

    How can i remove the WordPress update Notifications that my clients see in the top of the administration panel. By the way, thank you very much for those great tips.

  19. arnold says:

    thanks for the tuts

    btw the step 2 which is “Removing the sections from dashboard ” doesnt work? or is it just me?

    • It doesn’t work for me too..

      • uncomment global $wp_meta_boxes; in code and you will see magic then ;)

        • arnold says:

          yeah I know that’s a comment so I didnt include that :D

          here’s what I added…
          function example_remove_dashboard_widgets() {
          unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
          unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
          unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
          }

          add_action(‘wp_dashboard_setup’, ‘example_remove_dashboard_widgets’ );

    • The code for step 2 is pretty messed up in the original post. Copying and pasting that comments some functions, and adds all sorts of whitespace where it oughtn’t be.

      Try this instead:

      // REMOVE META BOXES FROM WORDPRESS DASHBOARD FOR ALL USERS

      function example_remove_dashboard_widgets() { // Globalize the metaboxes array, this holds all the widgets for wp-admin
      global $wp_meta_boxes;
      unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
      unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
      unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
      }
      add_action(‘wp_dashboard_setup’, ‘example_remove_dashboard_widgets’ );

  20. Lebo says:

    It doesn’t work for me. I tried to use it in a child theme, got the following error message:

    // CUSTOM ADMIN LOGIN HEADER LOGO function my_custom_login_logo() { echo ”; } add_action(‘login_head’, ‘my_custom_login_logo’);
    Warning: Cannot modify header information – headers already sent by (output started at /home2/domain/public_html/sub-domain/wp-content/themes/son-of-suffusion/functions.php:5) in /home2/domain/public_html/sub-domain/wp-login.php on line 353

    Warning: Cannot modify header information – headers already sent by (output started at /home2/domain/public_html/sub-domain/wp-content/themes/son-of-suffusion/functions.php:5) in /home2/domain/public_html/sub-domain/wp-login.php on line 365

  21. Very nice explanation. Thx a lot.

  22. Drazen Mokic says:

    echo ‘ h1 a { background-image:url(‘.get_bloginfo(‘template_directory’).’/images/logo_admin.png) !important; } ‘;

    I am not sure if there is a cleaner and more elegant way, but this is really dirty.

  23. Rawaf says:

    Great post, But I want ask you , How can I remove comment section in dashboard and menu ?

    I was use the following code with wordpress 3.0

    //Remove Some Admin Menu Items
    function remove_menu_items() {
    global $menu;
    $restricted = array(__(‘Links’), __(‘Comments’),__(‘Tools’));
    end ($menu);
    while (prev($menu)){
    $value = explode(‘ ‘,$menu[key($menu)][0]);
    if(in_array($value[0] != NULL?$value[0]:”" , $restricted)){
    unset($menu[key($menu)]);}
    }
    }

    add_action(‘admin_menu’, ‘remove_menu_items’);

    //Remove Comments from Favorite Menu
    function custom_favorite_actions($actions) {
    unset($actions['edit-comments.php']);
    return $actions;
    }

    add_filter(‘favorite_actions’, ‘custom_favorite_actions’);

    but after update to last version it’s not work .. any idea or fix ?

    thank you

  24. Dave says:

    “The path “images/logo_admin.png” is relative to the main theme folder and needs to be changed based on the location of your logo image.”

    How would we change this to the child theme?

  25. Troy Dean says:

    With over 35,000 downloads, this is very popular too – http://wordpress.org/extend/plugins/white-label-cms/

  26. Harish says:
    Author

    Hello Guys. I am noting down all suggestions so some of the scripts in this article could work better even in child themes. Any other suggestions/corrections could also be sent directly on twitter at @harishchouhan.
    http://www.twitter.com/harishchouhan

  27. Narendra says:

    Great article though, extremely useful for me because I was looking exactly something like this. Thanks Harish for it.

  28. Satish says:

    Greate article. Thanks for posting…

  29. Synergywp says:

    No mention of W3 Total Cache? By far the best caching/minifying plugin that can also serve to upload to CDN and purge Varnish? w3TC should be mentioned first, then the other 3 listed as “If you don’t like awesome power, use these:”

  30. Harish says:
    Author

    @Synergywp I myself use W3TC for all its options & mostly MaxCDN & Cloudfare support, however it takes lot of time for setting it up and so I decided to only add the simplest once in my list. But as suggested, the line you said should be added to this article

  31. Peter Sawyer says:

    A great article with some great tips that I will be implementing on my own website as well as clients.

  32. Stephen says:

    how can I change the default post view of the posts, from list view to excerpt view? I would like the excerpt view be selected every time I open admin panel?

  33. CCW says:

    I cannot apply the second step. Is there an error with the code? I get this error;
    Call to undefined function add_action()….. How can i fix it?
    I tried to uncommend global $wp_meta_boxes but i still get this error.

  34. Adrian says:

    In version 3.3 , #header-logo will change to #icon-index

    so you should change it to :

    //Dashboard Logo
    function custom_admin_logo() {
    echo ‘#icon-index { background-image:url(http://sektorrd.com/assets/nano.png) !important; height: 34px !important;margin:0 !important; width: 34px !important; }’;
    }
    add_action(‘admin_head’, ‘custom_admin_logo’);

    See’a

    • Adrian says:

      oh Sorry should be:

      //Dashboard Logo
      function custom_admin_logo() {
      echo ‘#icon-index { background:url(http://sektorrd.com/assets/nano.png) !important; height: 34px !important;margin:0 !important; width: 34px !important; }’;
      }
      add_action(‘admin_head’, ‘custom_admin_logo’);

      • Adrian says:

        There’e also in WP3.3 a Super Annoying Admin Bar on the Top….

        I haven’t found the way to remove the bar , but I just use

        //Admin Menu Bar
        function custom_admin_bar() {
        echo ‘#wp-admin-bar-wp-logo,#wp-admin-bar-comments,#wp-admin-bar-new-content,#wp-admin-bar-help { display:none !important; visibility:hidden !important; }’;

        }
        add_action(‘adminmenu’, ‘custom_admin_bar’);

  35. Bobby B says:

    Found a page that helped make sure the Login Page Logo (Step 1.1) fits and is not cropped. Very helpful for me!

    http://wordpress.org/support/topic/change-login-picture#post-1515940

  36. Miroslav says:

    Never use IDrive − they’re access to your gmail contact and send them spam without your confirmation.

  37. Derek says:

    Some very nice code and your plugin list is a pretty good resource. Nice job and thanks.

  38. Trip Advisor says:

    I want to know deep of wordpress
    is there any video tutorial for wordpress
    i want to become expert of wordpress
    So that i can create different kind of script using wordpress.
    Thank you

  39. I’ve included many things like this in a custom “required code” plugin in the plugins-mu folder (to prevent client from disabling). I got the idea from Bill Erickson: https://github.com/billerickson/Core-Functionality

  40. Will says:

    Hey great tutorial here.

    I know very little PHP, but I’m pretty handy with WordPress. This would really put the finishing touches on my sites.

    One question though, I added the action script in part 1 and it deleted the WP logo from the login page, but it didn’t like my image location apparently.

    Can you explain “The path “images/logo_admin.png” is relative to the main theme folder”? My images aren’t in my main theme folder.

    Thanks,

    Will

  41. AyZee says:

    Tried whats mentioned above but author and a few participants on changing admin bar logo , none worked it returned an error . Any suggested plugin that does the job. Ohh almost forgot . thanks for the super article.

    Regards,

  42. yerete says:

    surbatteries.com I know very little PHP, but I’m pretty handy with WordPress. This would really put the finishing touches on my sites.

  43. keha76 says:

    Removing dashboard widgets with this code did not work for me using WP v3.3.2. Used the remove_meta_box function instead, works like a charm. You can read more about it here: http://codex.wordpress.org/Dashboard_Widgets_API

    function remove_dashboard_widgets()
    {
    // Remove dashboard widgets
    remove_meta_box(‘dashboard_plugins’, ‘dashboard’, ‘normal’);
    remove_meta_box(‘dashboard_quick_press’, ‘dashboard’, ‘side’);
    }
    add_action(‘wp_dashboard_setup’,'remove_dashboard_widgets’);

    Thanks for the useful article!

Add a Comment

To add a code snippet to your comment, please wrap your code like so: <pre name="code" class="html">YOUR CODE</pre>. You can replace the class name with "js," "css," "sql," or "php." If there are any "<" or ">" within your code, please search and replace them with: &lt; and &gt; respectively.