WordPress角色功能限制

时间:2013-08-23 作者:Umesh Awasthi

我正在一个旅游网站上工作,计划在门户中添加以下功能。

用户注册功能

  • 让用户管理那里的个人资料
  • 让用户提交那里的旅行故事以供批准WordPress Roles_and_Capabilities 看起来它可以为我完成大部分工作。此外,似乎Contributor 该职位将帮助我实现上述所有目标,但第5级除外。

    我测试过Contributor 角色,但发现有一个问题,登录用户可以在仪表板中查看所有帖子(但除了自己的帖子外,无法修改)。我只想向当前用户显示他提交的帖子,如果他/她已被分配角色为Contributor.

    我知道我可以使用remove_cap(\'capability to remove\')add_cap(\'\'); 删除/添加功能的方法。

    有没有办法extend 这个Contributor 角色并添加仅显示用户创建的帖子的功能。

    此外,是否可以更改具有以下角色的所有用户的仪表板主题admineditor?

    顺便说一下,我没有开发任何插件。

  • 1 个回复
    SO网友:Stephen Harris

    以下内容不包括用户在edit-post 屏幕(如果需要,您可以添加更多的屏幕ID),如果他们具有“参与者”角色。

    通常我会建议添加一个自定义功能,并比较该功能而不是角色。但由于这个插件似乎不是用于分发的,所以这并不是一个重要的区别。

    add_action( \'pre_get_posts\', \'wpse111322_hide_posts_not_by_me\' );
    function wpse111322_hide_posts_not_by_me( $query ){
    
        global $wp_roles;
    
        //Which screen IDs to apply to:
        $screen_ids = array( \'edit-post\' );
    
        if( $query->is_main_query() && is_admin() && in_array( get_current_screen()->id, $screen_ids ) ){
    
            //Get the user\'s role
            $current_user = wp_get_current_user();
            $roles = $current_user->roles;
            $role = array_shift( $roles );
    
            if( $role == \'contributor\' )
                $query->set( \'author\', get_current_user_id() );
        }
    }
    
    Note: 这不会删除post计数。因此,您可以在顶部看到所有(61)个帖子,但表中只有5个帖子。

    结束

    相关推荐

    Display All Non-Used Plugins

    我的公司目前拥有大约20个多站点,并且每天都在增长。我们正在尝试通过插件并制定标准。IE,表单使用插件X。然而,我们还没有找到一种单一的方法来检查和系统地显示哪些插件甚至没有被使用。是否有一个功能可以向我们显示已使用或未使用的插件?我试着寻找我能想到的一切,但我一生都找不到答案。