那么(1)呢current_screen
? 动作钩,或(2)的条件get_current_screen()
在您的条件中,然后调用wp_redirect
?
都给你一个WP_Screen object
它有几个参数,包括$parent_base
property 如果需要的话,这也可以提供更广泛的包容性。
以下是法典中的属性列表:
$action 与屏幕相关的任何操作。”为*“添加”-添加。php和*-新建。php屏幕。否则清空。
$base 屏幕的基本类型。这通常与$id相同,但删除了任何帖子类型和分类法。例如,对于$id为“edit post”的情况,基数为“edit”。
$id 屏幕的唯一ID。
$is_network 屏幕是否在网络管理中。
$is_user 屏幕是否在用户管理中。
$parent_base 基本菜单父菜单。这是通过删除查询字符串和any从$parent\\u文件派生的。php扩展$“编辑”的父文件值。php?post\\u type=页面“和”编辑。php?post\\u type=post“以$parent\\u为基数进行编辑”。
$parent_file 每个管理菜单系统屏幕的$parent\\u文件。某些$parent\\u文件值为“编辑”。php?post\\u type=页面\',\'编辑。“php”和“选项常规”。php’。
$post_type 与屏幕关联的帖子类型(如果有)。“编辑”。php?post\\u type=page“屏幕的帖子类型为page”。“编辑标签”。php?分类法=$分类法;post\\u type=page“屏幕的帖子类型为page”。
$taxonomy 与屏幕关联的分类法(如果有)。“编辑标签”。php?taxonomy=category”屏幕的分类为“category”。
这只是一个可能用法的简单示例,而不是按原样工作的代码:
add_action( \'current_screen\', \'my_function\' );
function my_function( $current_screen ) {
//true for anything other than page prefixed with edit.php
if ( $current_screen->parent_base !== \'edit\' ) {
//get user role here, then:
if ( in_array( $user->roles ) ) {
//send to /wp-admin/
//note: for multisite I don\'t think admin_url() is the function you need
wp_redirect( admin_url() );
}
}
}
对于您的具体情况,可能有更好的方法,但一般来说,我使用了类似的打开/关闭访问post\\u类型或用户配置文件屏幕的方法,而不会影响用户登录的能力。