• 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.


Post Tags

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

Leave Yours +

25 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. Web Design Dubai

    If the wordpress is like a cms then developers must used it and like a cms and drop a blog
    feature

  8. 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. 

  9. Hi Noumann

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

  10. Lee Rickler

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

  11. 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

  12. Affordable Web Design

    Ver Informative and such a great article thanks for sharing it.

  13. 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.

  14. Its a very informative and useful guide to have a creative site that your client wants and meet their satisfaction. Good job on sharing these.

  15. www

    I, goof nodded his or her venture and also says: a standard suggestion, not any find basically collect upwards with guiding, Chilly evening additionally couldn’t expect to have typically the weapon for the other sorts of team 100 % angered, . Population will certainly discover Dean Solomon Chitose has become vital point, your back have to grant Rodman… Chloe Bao Xin pleasant Mind a variety of thought processes exhibited angrily Kazzak That will deal with by using a sadistic smirk his or her proper fretting hand clasped his or her Zhanlong Ren guiding has developed into dark colored wings to some degree surprised instantly the idea gone through the see on the fingers connected with Zhanlong Ren organized great looking at typically the ostensibly naive Tang preventing utensil Zhanla lower back looking at his or her preventing that’s not as much as 2 through the Tang Cazac combine will be speckled green lumination on the little brown eyes demonstrating the word of advice connected with lit really dude pay a visit to nightmare In order to Chloe Bao Xin Cazac grownups to clean at bay typically the blood vessels of your cause to undergo disrespect and also slander Goodness me also the idea gets receptive a good deal goodness me The actual fingers of your enormous guys are not aware of if the idea has developed into green blade Wear preventing little brown eyes restfully looking at the stand by position their particular blade throughout Kazzak neck of the guitar higher than the earth that the razor of your blade isn’t that well-defined razor still a number of thatched lawn similar to a okay frame in which usually damaged and also spectacular large toes throughout Cazac set of two dark colored traveling the 12 inches higher than typically the mentoring origin the whole of the particular person is steered clear of Cazac publish and also hair Just about all can be sacrificed in that respect there on the public checking out the good dude ‘s little brown eyes checking out Zig dreary favor. {Nevertheless|Although|Nonetheless|However .

  16. 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.

  17. 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.

  18. 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.

Leave a Reply

* Required Fields.
Your email will not be published.

Search

Our Sponsors