WordPress: Disable “Add New” on Custom Post Type

前端 未结 10 916
执笔经年
执笔经年 2020-12-07 14:58

Is there any way to disable the option of adding a new post under a Custom Post Type in WordPress (3.0)? I\'ve looked into labels and arguments but can\'t find anything that

10条回答
  •  温柔的废话
    2020-12-07 15:07

    Full credit to Seamus Leahy

    There is a meta capability create_posts that is documented here and is used by WordPress to check before inserting the various 'Add New' buttons and links. In your custom post type declaration, add capabilities (not to be confused with cap) and then set it to false as below.

    register_post_type( 'custom_post_type_name', array(
      'capability_type' => 'post',
      'capabilities' => array(
        'create_posts' => 'do_not_allow', // false < WP 4.5, credit @Ewout
      ),
      'map_meta_cap' => true, // Set to `false`, if users are not allowed to edit/delete existing posts
    ));
    

    You'll probably want to set map_meta_cap to true as well. Without it, you won't be able to access the posts' editing pages anymore.

    May I ask why you want to do this?

    I would at first have suggested changing the capabilities for your custom post type, but I don't think there's one that limits who can add posts, but only who can edit or publish them.

    It looks a little dirty, but you could try unsetting the item in the $submenu global;

    function hide_add_new_custom_type()
    {
        global $submenu;
        // replace my_type with the name of your post type
        unset($submenu['edit.php?post_type=my_type'][10]);
    }
    add_action('admin_menu', 'hide_add_new_custom_type');
    

提交回复
热议问题