不知道是否有此插件,您应该通过搜索尝试"restrict page by user roles" 在里面WordPress directory.但如果您可以编写代码,并且知道一些条件标记以及如何使用它们,那么我认为您应该尝试以下代码片段,它将对您有用。
But Beware, 这将重定向到未在$allowed\\u pages数组中输入的所有其他页面的主页。因此,只需根据您的要求添加更多if条件。
add_action( \'template_redirect\', \'neo_restrict_pages_as_per_user_roles\' );
function neo_restrict_pages_as_per_user_roles(){
if( is_user_logged_in() && !current_user_can(\'administrator\') && (!is_home() || !is_front_page() ) ){
$user_meta = wp_get_current_user();
$user_roles=$user_meta->roles;
$allowed_pages = array(
\'subscriber\' => array(\'2\'),
\'author\' => array(\'16\',\'18\')
);
if( array_key_exists($user_roles[0], $allowed_pages) ){
$allowed_pages_ids = $allowed_pages[$user_roles[0]];
if( !in_array( get_the_ID(), $allowed_pages_ids ) ){
wp_redirect( home_url(), 302 );
}
}
}
}
在上面的代码中,您只需在下面的数组中添加页面ID及其角色
$allowed_pages = array(
\'subscriber\' => array(\'2\'),
\'author\' => array(\'16\',\'18\')
// user roles => array(\'page id 1\', \'page id 2\', ...)
);
把这个放在你的函数中。php文件的主题,但在此之前不要忘记备份该文件。因此,如果不能按照您的要求工作,您可以将其还原。