• Blog

    Latest from our Blog

  • Tools

    Our Favourite WP Tools

  • Hosting

    Recommended Web Hosts

  • Coupons

    Get great money off deals

  • Themes

    WordPress Theme Directory

  • Plugins

    WordPress Plugins Directory

  • Promote

    Your WordPress Product

Many WordPress developers would agree that WordPress is the most easy to use and powerful CMS. However, it comes as a surprise to many that their clients think of it as a blog. “I asked you for a business website and you handed me a blog” is a common complaint. We know that this is not the case, and that the developer wasn’t dishonest or anything, but still it creates a bad situation and it is not good for a developer’s reputation, customer retention, and trust worthiness.

A good example of a WordPress admin that has been completely customized and branded is Happy Tables, check out the modifications they have made, an end user wouldnt even know they are using WordPress.

In this post we will look at how WordPress developers can completely transform a WordPress admin area and tailor it to your client’s needs completely.

Get Rid of Blog Posts

The Posts tab in the admin area, is an obvious indication of a blogging tool.  They wouldn’t necessarily notice all the transformation and development you have done because those are not as easily visible as the “Create New Post”. It is everywhere, in the admin menu, on the top admin bar. I am assuming that you have created a custom post type for your client with custom taxonomies and meta fields. Like for example a custom post type called “Products” with custom taxonomy “Sections”. Now how cool it would be if your client logs on to their site and see Add New Product instead of post? So lets fix this.

Remove Posts From WordPress Admin Menu

WordPress 3.1 was a significant release as it came with many new features that made it easier to take full advantage of WordPress as a CMS. Removing menu items from the admin menu was possible before 3.1, but not easier. Now you can add a menu item by using remove_menu_page function. In our example we are going to remove Posts from the menu. Remember that this goes into your themes functions.php file.


add_action( 'admin_init', 'my_remove_menu_pages' );

	function my_remove_menu_pages() {
		remove_menu_page('edit.php');
	}

Doing this your custom post types and taxonomies will replace Posts in the menu, if they don’t check their menu position and bring them up. Now when the clients sign in, the first item on their admin menu is not posts but the one you have created for them which could be anything like products, items, services, etc. When clients are creating new content, they know that they are adding their own content and not writing a blog post.

Remove New Post from the Admin Bar

The +New menu item on the admin bar has Post as a submenu. Since we want our client not to see the post because they wont be writing posts, they will be adding content using the post type we have created for them. The first item in the top menu will be irrelevant to them so lets fix this and remove post from the Admin bar. While we are at it, how about removing links and comments as well. The code below will remove +New menu, comments and Links from the Admin bar.


function remove_admin_bar_links() {
	global $wp_admin_bar;
	$wp_admin_bar->remove_menu('new-content');
	$wp_admin_bar->remove_menu('new-link');
$wp_admin_bar->remove_menu('comments');

}
add_action( 'wp_before_admin_bar_render', 'remove_admin_bar_links' );

Now that we have removed the useless items from the Admin bar, it looks empty and sad. Adding items and custom links to WordPress admin bar is as easy as removing them. In the example below we are going to create a menu for adding New Products and Sections which will be the main content our client will be generating. Here is the code:

function add_mycms_admin_bar_link() {
	global $wp_admin_bar;
	if ( !is_super_admin() || !is_admin_bar_showing() )
		return;

	$wp_admin_bar->add_menu( array(
	'id' => 'add_product_menu', // Could be anything make sure its unique
	'title' => __( 'Add Products'), //This will appear on the Menu
	'href' => __('http://www.example.com/wp-admin/post-new.php?post_type=products'),
	));

	// Add sub menu link "View All Products"
	$wp_admin_bar->add_menu( array(
		'parent' => 'add_product_menu', // The unique ID of the parent menu
		'id'     => 'view_all_products',
		'title' => __( 'View All Products'),
		'href' => __('http://www.example.com/wp-admin/edit.php?post_type=products'),
	));

	// Add sub menu link "Sections"
	$wp_admin_bar->add_menu( array(
		'parent' => 'add_product_menu',
		'id'     => 'my_sections',
		'title' => __( 'Sections'),
		'href' => __('http://www.example.com/wp-admin/edit-tags.php?taxonomy=Section&post_type=products'),
	));

}
add_action('admin_bar_menu', 'add_mycms_admin_bar_link',25);

Remove Comments and Links from WordPress Admin Menu

As a professional WordPress developer you will be developing websites with different objectives. Most of your clients will not be looking for blogs and many clients will be over protective of their brand. So there are a lot of WordPress features they wont be needing. Like for example, links. Your clients will not want to add a blogroll or favorite links list anywhere on their site. They may also not want to have comments enabled on individual pages and items they create.

So lets remove comments and links from client’s dashboard as well because if they don’t have comments enabled then there is no need to have comments and links in the admin menu. To do that we will revisit the code we used above to remove Posts from the admin menu and add lines to remove comments and links as well.

add_action( 'admin_init', 'my_remove_menu_pages' );

	function my_remove_menu_pages() {
		remove_menu_page('edit.php');
		remove_menu_page('edit-comments.php');
		remove_menu_page('link-manager.php');
	}

Fix your Theme for a CMS

Most WordPress themes you choose for the development will have blog elements for clients that need them. But if your clients don’t need them then you need to make sure that your theme does not give any hint about those things. Like for example, showing a big heading telling users that “comments are closed” or “No Comments” on a post where comments were never actually enabled, or a search page, or a 404 page telling users that “No posts found matching their criteria”. These tiny things will give you away and your client may think that you didn’t do justice to the job. Polish your theme to match your CMS and the features your client and their visitors will be using.

Fix your Widgets for a CMS

In the widgets area there will be widgets to show recent posts, recent comments, popular posts, calendar, links, meta and what not. Make sure that your clients have the widgets they need. Replace recent posts widget with the recent post-type you have created for them. Remove recent comments widget if your clients don’t have comments enabled. Remove widgets for links, blogrolls, tag clouds and monthly archives.

Wouldn’t that make my theme look less sophisticated? It would, thats why you need to provide widgets that your clients will actually use. Rethinking Widgets will create a better user experience for the client and it will be a good experience for you as well to think outside the box and look at WordPress differently.

Rebrand WordPress and Convert it into a Highly Customized CMS

WordPress is an opensource platform, this means that you have the freedom to modify it and use it. Now your clients ordered a customized CMS for their business website. How about you put your client’s brand first? Trust me those business minded folks love it when you put their logos on top. So lets remove WordPress branding and add your client’s brand first.

Replace WordPress Logo on the Login Page


The login screen of a WordPress installation has the official WordPress logo. This logo looks awesome and changing it does not adds or remove any functionality of the software itself. However, clients love their brands and once you are done with their project and invite them to check it over, they would be happy to see their own logo instead of WordPress.

Changing this logo is fairly easy and simple. You can add a simple function to your theme’s functions.php file to replace the logo with your client’s logo.


// Custom Login Logo //

	function mywp_custom_login_logo() {
    		echo '<
        		h1 a { background-image:url('.get_bloginfo('template_directory').'/images/mywp-login-logo.png) !important; }

		>';
	}

add_action('login_head', 'mywp_custom_login_logo');

Source: Change the Logo on your WordPress login page

An alternate method to replace this logo is to rename your logo image to logo-login.png and place it in /wp-admin/images/ folder replacing the original WordPress login logo.

Remove WordPress Logo from Admin Bar

The WordPress logo in the admin bar is linked to the about section of the admin area dashboard. It is also a drop menu with links to WordPress Documentation and support forums. It can be easily removed by adding a line to the function we used abot to remove Posts from the admin bar. So if you are already using that function add the line to remove wp-logo from the admin bar like this:

 function remove_admin_bar_links() {
	global $wp_admin_bar;
	$wp_admin_bar->remove_menu('wp-logo');
	}
add_action( 'wp_before_admin_bar_render', 'remove_admin_bar_links' );

Conclusion

This is not all that can be done to better represent WordPress as a CMS to clients. I am sure some of you will have your own tips on the subject and experiences you had with clients while developing with WordPress. Please share your tips and stories in the comments below.


Disclosure: This page may contain affiliate links for which we will receive compensation if a purchase is made via the link.

Noumaan is a blogger and social media expert. He loves Quora, Facebook, Wordpress, OpenSource Software and The Sims.

Leave Yours +

20 Comments

  1. Gavin Flood

    Great article! I am always looking for new ways to customize the WordPress Admin and make sure my clients see only the things they need to see. They shouldn’t ever have to worry about posts, comments, links or even seeing the WordPress logo when all they wanted was a custom CMS without that stuff.

    • Anonymous

      @google-3aeece25b95b4b8daece34b045ffafe8:disqus exactly my point, if WordPress is truly a CMS then developers should use it like a CMS and drop blog features that clients haven’t requested. 

  2. Yep, extra things which arent needed can only serve to confuse some clients – depends how tech savvy they are and whether they are familiar with WordPress in the first place.
    Im a big fan of what http://www.happytables.com have done with the admin.

  3. Hi Noumaan,

    great article, thanks! There’s only one thing I would like to mention .. I guess you forgot some code in your Custom Login Logo hack?

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

    BTW: loved your previous post here too, lots of stuff to learn ;-P Cheers & Ciao ..

    • Anonymous

      @twitter-19877875:disqus 
      : thank you for notifying me. There is something wrong in that code, which I can’t figure out right now. Using your code will result in an error too as you have used double quotes inside a single quote. I will fix this, mean while WordPress login logo can also be changed by using one of the plugins available. For example Uber Login Logo 
      http://wordpress.org/extend/plugins/uber-login-logo/ 

  4. Thanks for this information. I am actually in the process to brand WP backend to be unique and simple. It’s for a project we are working on and will be making it available to our client base.

  5. Excellent post and thanks for sharing so many useful code snippets :)

  6. add_action( ‘admin_init’, ‘my_remove_menu_pages’ );  should be 
    add_action( ‘admin_menu’, ‘my_remove_menu_pages’ ); 

    Was causing some problems with my site till I changed it.

    • Anonymous

      @558d03a8a33f01bf3cc73b9bc4ac78b7:disqus  rechecked its working fine on my site. Thanks for sharing it will help other users and they can use admin_menu if admin_init doesn’t work. 

      • Reason being, it seems to spit out errors whenever editing anything. So by changing it to admin_menu instead it stops these errors being produced.

  7. This is a pretty awesome collection of functions and tips, Noumaan! Thanks for putting it together. I usually try to nudge my clients toward using the blogging and web-social functions (like links), but when that fails, these snippets will be very helpful. Bookmarking this for sure. :-)

    • Anonymous

      @e9b6aafab759c77b5ab7531e1ef25b95:disqus  I totally agree with your approach to inform the clients about the benefits of having a blog and social features on their website. I think as WordPress developers this is a more honest approach to let the clients know what they will miss. 

  8. Hi Noumann

    Saw this article a couple of days ago, excellent stuff! 

  9. Lee Rickler

    Most of these functions and more are included in the Point and Stare CMS Functions plugin – search for it on the repo!

  10. An interesting discussion is worth comment. I thinks you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers

  11. Gabriel Harper

    If you’re adding top-level menu items and are sick of the positioning conflicts (eg disappearing pages/posts links) I have been using decimals for sorting:

    http://gabrielharper.com/blog/2012/08/wordpress-admin-menu-positioning-conflicts/

    Would be nice for WP to improve on this but so far it works sooo much better.

  12. Thank you for these tips. This is a good start. I would add that its better to create a plugin and add these wp admin modification php functions to it. That is better than putting them in function.php file. This way just in case your code is wrong or it breaks when future wp updates come you can test whether your code is cuasing the break by deactivating the plugin.

  13. I agree with Aksam Zarook. Why?, because the reason of (indeed) deprecation of a function/action and/or the fact that IF an (end)user wants another theme you have to move all your functions out of the theme functions. We use for those (only when it is not theme specific, and this is not theme specific) a folder called mu-plugins. and drop there our “special” functions, so they are always available and the (end)user can’t/won’t delete it accidentally. (if they have also access to the plugins in the admin tab)
    Btw nice some up, thnx.

  14. Just a word of caution with some of these. When using the my_remove_menu_pages function I found that I could not use the media manager correctly. Be sure to test all these extensively before using them on a client site.

  • Comments are Closed

Search

Our Sponsors