首页 文章

如何根据wordpress中的角色将页面限制为指定用户

提问于
浏览
0

我是wordpress的新手,我有一个网站,其中包含一些不同的wordpress基础角色(管理员,作者,贡献者...)

我创建了具有以下功能的chef_dept,employee员角色:

add_role('Chef_Dept', __(
    'Chef_Dept'),
     array(
        'read'              => true, // Allows a user to read
        'create_posts'      => true, // Allows user to create new posts
        'edit_posts'        => true, // Allows user to edit their own posts
        'edit_others_posts' => true, // Allows user to edit others posts too
        'publish_posts'     => true, // Allows the user to publish posts
        'manage_categories' => true, // Allows user to manage post categories
        'upload_files'      => true, //  Allows user to upload file 
    )
);

add_role('employee ', __(
   'employee '),
    array(
        'read'              => true, // Allows a user to read
        'create_posts'      => true, // Allows user to create new posts
        'publish_posts'     => true, // Allows the user to publish posts
        'manage_categories' => true, // Allows user to manage post categories
    )
);


add_role( $role, $display_name, $capabilities );

我需要限制所有有角色员工的用户不能进入某些页面,这可能吗?

我正在使用 Restrict Page By Role 插件,但似乎无效,因为具有 employee 角色的用户能够上传文件并进入受限制的页面

2 回答

  • 0

    你可以在你的functions.php中实现这个功能,这将解决这个问题,但是你必须为每个页面分配用户必须具备的功能 .

    function is_corr_user($page_slug) {
    
      // User has to be logged in
      if(!is_user_logged_in())
        return false;
    
      // All user roles
      $roles = wp_get_current_user()->roles;
    
      // For each page check if user has required role
      switch($page_slug) {
        case "page-1":
         return in_array('Chef_Dept', $roles);
        case "page-2":
         return in_array('Chef_Dept', $roles);
        default:
          return false:
      }
    }
    
    
    // Hook to wordpress before load and check if correct user is on page
    add_action( 'wp', 'wpse69369_is_correct_user' );
    function wpse69369_is_correct_user()
    {
        global $post;
    
        // Not working on homepage
        // Redirect to homepage if wrong user
        if(!is_home() && !is_correct_user($post->post_name)) {
          wp_redirect( '/' );
          exit;
        }     
    }
    
  • 0

    你可以使用插件:

    https://fr.wordpress.org/plugins/wp-jv-post-reading-groups/

    我在内联网上使用它,因为它允许将wordpress的角色与公司的角色分离

    创建页面或文章时,您有一个选择框,允许您定义哪个“阅读组”可以访问它

    而且,它的创建者在出现问题时非常敏感

相关问题