您想在以下三个位置对WordPress隐藏用户:
管理员中的用户列表该用户列表上方的计数前端用户的作者存档正如您所提到的,您已经解决了第1项,并包含了该项的代码。因此,我将提供第2项和第3项的解决方案。
您要隐藏的用户是一个用户ID为1的管理员,因此我正在进行此假设。我还假设它是那里唯一的管理员用户。对于以后遇到此答案的任何人,如果要隐藏其他用户/用户组,则需要相应地修改代码。
修改用户计数不幸的是count_users() function 不可过滤。但是,用户计数显示在指向不同用户视图的超链接中,这些视图由WP_List_Table::views() 作用这些视图可以使用动态过滤器进行过滤,views_{$this->screen->id}
, 在用户页面上,转换为views_users
.
因此,我们将连接到此过滤器并执行两件事:完全删除Administrator视图,并在All视图中将计数减少1。只有当前登录的用户不是我们的超级用户(ID==1),我们才会这样做。
add_filter( \'views_users\', \'wpse230495_modify_user_views\' );
function wpse230495_modify_user_views( $views ) {
if( get_current_user_id() === 1 ) { return $views; } // bow out if we\'re user number 1
// filter the \'all\' count and remove 1 from it
$views[\'all\'] = preg_replace_callback(
\'/\\(([0-9]+)\\)/\',
function( $matches ){ return \'(\' . ( $matches[1] - 1 ) . \')\'; },
$views[\'all\']
);
// filter the \'administrator\' count and remove 1 from it
$views[\'administrator\'] = preg_replace_callback(
\'/\\(([0-9]+)\\)/\',
function( $matches ){ return \'(\' . ( $matches[1] - 1 ) . \')\'; },
$views[\'administrator\']
);
// alternatively, uncomment next line if you want to remove Administrator view completely
// unset( $views["administrator"] );
return $views;
}
在前端隐藏用户的作者档案这有点简单。我们要做的就是
template_redirect
如果访问者试图访问我们的特权用户的作者档案,则将其重定向回主页的操作。
add_action( \'template_redirect\', \'wpse230495_author_archive_redirect\' );
function wpse230495_author_archive_redirect() {
if( is_author() && get_the_author_meta(\'ID\') === 1 ) {
wp_redirect( home_url(), 301 );
exit;
}
}
以上代码块是在WordPress 4.5.3上测试的(尽管在我的测试安装中只有一个用户-如果您的结果不同,请告诉我!)。