禁止添加新帖子(自定义帖子类型)

时间:2012-07-12 作者:urok93

如何禁用添加特定自定义帖子类型的新帖子?

在日志弃用通知插件中找到以下代码:

    $screen = get_current_screen();
    if ( self::pt == $screen->id && ( $screen->action == \'add\' || $_GET[\'action\'] == \'edit\' ) )
        wp_die( __( \'Invalid post type.\', \'log-deprecated\' ) );
    if ( self::pt != $screen->post_type )
        return;

2 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

根据this answer, “正确的方法”是:

register_post_type( \'custom_post_type_name\', array(
  \'capability_type\' => \'post\',
  \'capabilities\' => array(
    \'create_posts\' => false, // Removes support for the "Add New" function ( use \'do_not_allow\' instead of false for multisite set ups )
  ),
  \'map_meta_cap\' => true, // Set to `false`, if users are not allowed to edit/delete existing posts
));
--

<罢工>

add_action( \'load-post-new.php\', \'wpse_58290_disable_new_post\' );
function wpse_58290_disable_new_post()
{
    if ( get_current_screen()->post_type == \'my_post_type\' )
        wp_die( "You ain\'t allowed to do that!" );
}
请注意,您还需要隐藏UI元素,例如在菜单中,以及h2 在编辑屏幕上标记

SO网友:Frankey

作为上述/公认答案的补充,您可以使用此功能隐藏指向要禁用的页面的实际链接。

remove_submenu_page( 
    \'edit.php?post_type=product\',
    \'post-new.php?post_type=product\' 
);

结束

相关推荐