不允许用户创建新帖子和页面

时间:2017-01-25 作者:Sam

我正在定义一个名为Proofreader 正如名字所说,这个组的用户应该能够阅读和编辑帖子和页面。但我不希望他们创造新的。

通过自定义帖子类型,我可以设置一个功能create_post -> create_{cpt_name} 并为此用户组将其设置为false。在后端,他们现在看不到添加按钮,但仍然可以编辑帖子。这正是我想要的。不幸的是,我无法为WordPress(Posts&Pages)的预定义CPT设置此功能。还有Members 插件似乎无法限制创建新帖子的用户角色,同时允许他们编辑。

在研究过程中,我发现,这似乎是WordPress的一个大问题,尚未解决。这是真的吗?

如果没有,如果有人能帮我解决这个问题,我会非常感激。。。这将真的是我的网站的一个大问题的解决方案!

2 个回复
SO网友:Dane Morgan

为此使用remove\\u cap。

function remove_proofreader_create_posts(){
    global $wp_roles;
    $wp_roles->remove_cap( \'proof_reader\', \'create_posts\' );
    $wp_roles->remove_cap( \'proof_reader\', \'create_pages\' );
}
注意:这不是一个全局函数,而是WP\\u角色、WP\\u角色和WP\\u用户类的方法。必须使用这些类之一的实例来调用它,如示例所示。

另外:您将希望在插件激活期间调用该函数一次,而不是在常量挂钩上。

参考号:https://codex.wordpress.org/Function_Reference/remove_cap

SO网友:Dane Morgan

也许这种删除\\u cap()的替代方法可以解决这个问题

add_action( \'init\', \'stackx_set_proof_reader_capabilities\' );
function stackx_set_proof_reader_capabilities() {

   // Get the role object.
   $role = get_role( \'proof_reader\' );

   // A list of capabilities to remove from editors.
   $caps = array(
       \'creat_posts\',
       \'create_pages\',
   );

   foreach ( $caps as $cap ) :
       // Remove the capability.
       $role->remove_cap( $cap );
   endforeach;
}