Иерархия администратора

Можно ли скрыть любого пользователя Wordpress с полными правами администратора (включены ВСЕ возможности) от других пользователей с правами администратора (с включенными сравнительно меньшими возможностями) в области «Пользователи» (list_users)?

Я хочу создать своего рода иерархию ролей администратора и пользователей, где пользователь с главной ролью администратора со ВСЕМИ возможностями должен быть скрыт от других пользователей с меньшими ролями и возможностями администратора — в области «Пользователи».

Как я могу достичь/реализовать это?

Спасибо.


person Mon    schedule 21.12.2015    source источник


Ответы (2)


Полностью скрыть пользователя будет очень сложно и потребует большого количества перехватов и фильтров, даже если суперадминистратор будет только пассивно активен (без редактирования сообщений, публикации и т. д.).

Если вы просто хотите скрыть пользователя из списка пользователей бэкенда, возможно, будет полезен хук pre_user_query: https://developer.wordpress.org/reference/hooks/pre_user_query/

Альтернативное решение: не делайте других пользователей администраторами. Создайте настраиваемую роль с настраиваемыми возможностями. Администратор должен делать/видеть все на сайте WordPress, за исключением многосайтовой установки, где сетевой администратор еще сильнее.

person Blackbam    schedule 22.12.2015
comment
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 == 'DESIRED USERNAME GOES HERE') { } else { global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.user_login != 'DESIRED USERNAME GOES HERE'",$user_search->query_where); } } function hide_user_count(){ ?> <style> .wp-admin.users-php span.count {display: none;} </style> <?php } add_action('admin_head','hide_user_count'); [источник: забыто!] - person Mon; 30.12.2015
comment
Да, приведенный выше код работает для списка пользователей. Но я не могу понять, как скрыть имена конкретных авторов из столбцов авторов в различных рабочих областях (подпанелях) подменю внутренней навигации. Хотя я могу скрыть целые столбцы авторов из рабочих областей подменю, но не могу ограничить скрытие одним или несколькими конкретными подменю. Он также скрыт во многих других непреднамеренных подменю, что очень бесполезно. Итак, можете ли вы предложить какую-либо идею, как либо скрыть (i) (предпочтительные) имена конкретных авторов из столбцов авторов, либо (ii) скрыть целые столбцы авторов из указанных рабочих областей подменю? - person Mon; 30.12.2015

Код ниже работает для списка пользователей ТОЛЬКО:

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 == 'DESIRED USERNAME GOES HERE') { 

  }

  else {
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.user_login != 'DESIRED USERNAME GOES HERE'",$user_search->query_where);
  }
}

function hide_user_count(){
?>
<style>
.wp-admin.users-php span.count {display: none;}
</style>
<?php
}

add_action('admin_head','hide_user_count');

[Отказ от ответственности: код не мой, источник забыт.]

person Mon    schedule 30.12.2015