How to rename default posts-type Posts

I’m using the posts-type Posts to display portfolio items and it looks strange to have portfolio labeled as posts. Is there any way to rename Posts to Portfolio instead to better reflect it’s usage.

Related posts

Leave a Reply

9 comments

  1. I used the following script to rename the default post type:

    function change_post_menu_label() {
        global $menu, $submenu;
    
        $menu[5][0] = 'Portfolio';
        $submenu['edit.php'][5][0] = 'Portfolio';
        $submenu['edit.php'][10][0] = 'New Portfolio';
        $submenu['edit.php'][16][0] = 'Portfolio Tags';
        echo '';
    }
    add_action( 'admin_menu', 'change_post_menu_label' );
    
    function change_post_object_label() {
        global $wp_post_types;
    
        $labels = &$wp_post_types['post']->labels;
        $labels->name = 'Portfolio';
        $labels->singular_name = 'Portfolio';
        $labels->add_new = 'New Portfolio';
        $labels->add_new_item = 'New Portfolio';
        $labels->edit_item = 'Edit Portfolio';
        $labels->new_item = 'New Portfolio';
        $labels->view_item = 'View Portfolio';
        $labels->search_items = 'Search Portfolio';
        $labels->not_found = 'Not found';
        $labels->not_found_in_trash = 'Not found in trash';
    }
    add_action( 'init', 'change_post_object_label' );
    
  2. If you want to simply rename the appearance of posts, rather than creating a custom post type then add this code to your themes functions.php file.

    // hook the translation filters
    add_filter(  'gettext',  'change_post_to_portfolio'  );
    add_filter(  'ngettext',  'change_post_to_portfolio'  );
    
    function change_post_to_portfolio( $translated ) {
      $translated = str_ireplace(  'Post',  'Portfolio',  $translated );  // ireplace is PHP5 only
      return $translated;
    }
    

    In the interests of transparency I got this code from this article, although I have used similar tricks in the past.

  3. You need to create a Custom Post Type, “Portfolio”.

    Posts are Posts. Why try to use them as something they’re not, and then try to change their nomenclature, instead of writing one or two simple functions in functions.php, that will result in having both the exact functionality and the exact nomenclature that you want?

  4. The get_post_type_object will do the work.

    add_action( 'init', 'ns_change_post_object' );
    // Change dashboard Posts to News
    function ns_change_post_object() {
       $get_post_type = get_post_type_object('post');
        $labels = $get_post_type->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';
    }
    
  5. // hook the translation filters
    add_filter(  'gettext',  'change_post_to_article'  );
    add_filter(  'ngettext',  'change_post_to_article'  );
    
    function change_post_to_article( $translated ) {
         $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace is PHP5 only
         return $translated;
    }
    

    I got this tip from smashing magazine and tested it and it works great

    http://www.smashingmagazine.com/2011/05/10/new-wordpress-power-tips-for-template-developers-and-consultants/
    
  6. I found this thread when I was looking for a solution to change the post type from one name to an other.

    Instead of doing a custom query as suggested by someone in here I simply did this:

    $post = get_post( $id );      // The current post id
    $post->post_type = 'receipt'; // The new post type name
    wp_update_post( $post );      // Updating the new information
    

    The cpt have to ofc already have been created and formated..

  7. Rename posts to portfolio

    function litho_posts_portfolio() {
        global $menu;
        global $submenu;
        $menu[5][0] = __("Portfolio", 'litho');
        $submenu['edit.php'][5][0] = __("Portfolio", 'litho');
        $submenu['edit.php'][10][0] = __("New Item", 'litho');
        echo '';
    }
    function litho_posts_portfolio_label() {
        global $wp_post_types;
        $labels = &$wp_post_types['post']->labels;
        $labels->name = __("Portfolio", 'litho');
        $labels->singular_name = __("Item", 'litho');
        $labels->add_new = __("New Item", 'litho');
        $labels->add_new_item = __("New Item", 'litho');
        $labels->edit_item = __("Edit Item", 'litho');
        $labels->new_item = __("Item", 'litho');
        $labels->view_item = __("View Item", 'litho');
        $labels->search_items = __("Search Portfolio", 'litho');
        $labels->not_found = __("No Item Found", 'litho');
        $labels->not_found_in_trash = __("No Item found in Trash", 'litho');
    }
    add_action( 'init', 'litho_posts_portfolio_label' );
    add_action( 'admin_menu', 'litho_posts_portfolio' );
    
  8. You will just need to create another custom post with the same capabilities as a regular post. You can then disable the Posts menu with this:

    function remove_menus()
    {
        global $menu;
        $restricted = array( __('Posts'));
        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_menus');