那个is_page(\'wp-admin/users.php\') 不起作用,因为is_page() 是针对page 仅键入,函数使用mainWP_Query 调用(在页面加载时运行),但在users.php 页
但你可以使用全球$pagenow 用于检查当前管理页是否为users.php.
下面是一个使用admin_init hook:
add_action( \'admin_init\', \'wpse_385245_1\' );
function wpse_385245_1() {
global $pagenow;
if ( \'users.php\' === $pagenow &&
in_array( \'contributor\', wp_get_current_user()->roles ) ) {
wp_redirect( home_url( \'specific-page\' ) );
exit;
}
}
或者您可以使用
load-users.php hook 在加载
users.php 页,因此您不再需要检查
$pagenow 值:
add_action( \'load-users.php\', \'wpse_385245_2\' );
function wpse_385245_2() {
if ( in_array( \'contributor\', wp_get_current_user()->roles ) ) {
wp_redirect( home_url( \'specific-page\' ) );
exit;
}
}
但是,该钩子仅在
admin_init 和其他挂钩,所以如果您不想;“等待”;要完成这些额外的挂钩,只需使用
admin_init.
Notes: