Develop

WordPress: Rename the default “Posts” to “News” or something else

A little lesson in Client love

I’m a huge advocate for “Client Centric UX”. What I mean by that is focusing as much on the client’s user experience as we do on their target market’s user experience. Having a simple to use WordPress admin goes right along with this concept. Not everyone is familiar with WordPress…shocking, I know. Furthermore, there are a lot of people who are fairly tech-savvy but have no concept of what a “blog” does or what a “post” is.

Rename Post

[fig 1.0 post]

For this reason, I almost always rename the default “post” post type to something else. Why would I leave my client a menu item that says “Posts” when they are adding news updates, or portfolio items? When labels are not intuitive, they cause confusion…which in turn can lead to a slower learning curve for your poor, poor clients. Really, for your poor, poor self…because you know who they are going to call for instruction.

Note: I’m a huge fan of custom post types, but sometimes those aren’t even necessary. If you are only needing one type of post, just rename what you already have setup with this simple code.

Solution

Changing the “Posts” menu label involves changing the menu item itself, as well as the post object labels. In the example below we are changing “Posts” to “News”. You can, of course, change “Posts” to anything you want…just replace every instance of “News” in the code below with your desired label. All you need to do is paste this into your theme’s functions.php file.

function revcon_change_post_label() {
	global $menu;
	global $submenu;
	$menu[5][0] = 'News';
	$submenu['edit.php'][5][0] = 'News';
	$submenu['edit.php'][10][0] = 'Add News';
	$submenu['edit.php'][16][0] = 'News Tags';
}
function revcon_change_post_object() {
	global $wp_post_types;
	$labels = &$wp_post_types['post']->labels;
	$labels->name = 'News';
	$labels->singular_name = 'News';
	$labels->add_new = 'Add News';
	$labels->add_new_item = 'Add News';
	$labels->edit_item = 'Edit News';
	$labels->new_item = 'News';
	$labels->view_item = 'View News';
	$labels->search_items = 'Search News';
	$labels->not_found = 'No News found';
	$labels->not_found_in_trash = 'No News found in Trash';
    $labels->all_items = 'All News';
    $labels->menu_name = 'News';
    $labels->name_admin_bar = 'News';
}

add_action( 'admin_menu', 'revcon_change_post_label' );
add_action( 'init', 'revcon_change_post_object' );

Note:

Best practice would be to paste the above code into a functionality plugin so this travels with you no matter what theme you are using (this of course depends on the situation and the client/user). To learn more about functionality plugins, there is a good article by Justin Tadlock and also another over at WPCandy.

{ 45 Comments }

  1. George

    I am using [:en][:] (qTranslate) tags to make translation of titles into three languages. The upper function works perfectly with multi language settings , but there is a problem with *revcon_change_post_object()* function. It appears all the tags with text like this: “[:en]Articles[:ru]Rustranslation[:]”. What do you thinks about it ?
    Thank you

    • Chris Perryman

      I’m not immediately sure what’s happening since I can’t see your markup, but maybe try writing it like this:

      $labels->name = . your tags here . 'News';
      
    • George

      My code looks like this

      }
      function revcon_change_post_object() {
      global $wp_post_types;
      $labels = &$wp_post_types[‘post’]->labels;
      $labels->name = ‘[:en]Articles[:ru]Статьи[:ka]სტატიები[:]’;
      $labels->singular_name = ‘[:en]Articles[:ru]Статьи[:ka]სტატიები[:]’;
      $labels->add_new = ‘[:en]Add New[:ru]Добавить новую[:ka]ახლის დამატება[:]’;
      $labels->add_new_item = ‘[:en]Add Article[:ru]Добавить статью[:ka]სტატიის დამატება[:]’;
      $labels->edit_item = ‘[:en]Edit Article[:ru]Изменить статью[:ka]სტატიის მართვა[:]’;
      $labels->new_item = ‘[:en]Articles[:ru]Статьи[:ka]სტატიები[:]’;
      $labels->view_item = ‘[:en]View Articles[:ru]Просмотреть[:ka]ნახვა[:]’;
      $labels->search_items = ‘[:en]Search Articles[:ru]Поиск статей[:ka]სტატიების ძიება[:]’;
      $labels->not_found = ‘[:en]No Articles found[:ru]Статьи не найдены[:ka]სტატია ვერ მოიძებნა[:]’;
      $labels->not_found_in_trash = ‘[:en]No Articles found in Trash[:ru]В корзине Статьи не найдены[:ka]სტატია ვერ მოიძებნა[:]’;
      $labels->all_items = ‘[:en]All Articles[:ru]Все статьи[:ka]ყველა სტატია[:]’;
      $labels->menu_name = ‘[:en]Articles[:ru]Статьи[:ka]სტატიები[:]’;
      $labels->name_admin_bar = ‘[:en]Articles[:ru]Статьи[:ka]სტატიები[:]’;
      }

    • Chris

      So are those “tags” shortcodes? I’m not really familiar with them or the plugin you are using.

  2. Luc

    Just great, concise, efficient info. How would you ‘translate’ “Blogging”? “Newsing”? Would be fun to launch a new word!! Thanks for your help!

  3. That work!, I will create plugin that code.
    Thanks for your post!

  4. Thanks

  5. Mike Orfanidis

    Great.! Worked right out of the box.

    Thank you Chris!

{ Respond }

Leave a Reply

Your email address will not be published. Required fields are marked *


Adding code to your comment? Wrap it in the following tag to use the syntax highlighter.