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

时间:2018-02-21 07:45:59

标签: php wordpress user-roles

我是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 );

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

我正在使用限制页面角色插件,但似乎无效,因为具有员工角色的用户能够上传文件并进入受限制的页面< / p>

2 个答案:

答案 0 :(得分: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;
    }     
}

答案 1 :(得分:0)

您可以使用插件:

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

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

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

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