Intereting Posts
Как изменить цвет зависания (фокус) панели администратора из интерфейса? Мета-бокс в пользовательском типе сообщения не сохраняется Как перенести результаты поиска на определенную страницу? После создания настраиваемого типа сообщений URL-адрес для настраиваемых сообщений недействителен. как обрабатывать цикл, используя заполняющую структуру сетки бутстрапа? Возможно ли разделение таблиц базы данных с помощью HyperDB? Мета-значение не сохраняется для запланированных сообщений Обнаруживать тип сообщения при запуске publish_post Ключ action_post не дает post_meta_data Избегание снятия HTML-кода в пользовательском таксономическом мета-поле Создайте меню, которое отображает дочерние страницы с помощью wp_list_pages () с помощью функции нового меню в WordPress 3.0? Тип пользовательского сообщения WordPress с структурой папок в slug Конечная точка WordPress REST с интеграцией JSON для мобильных приложений Обновление URL-адресов совместного использования eXtended для перетаскивания? Не удалось войти с использованием имени пользователя

Настройка экрана «Пользователи-пользователи» на основе роли

Я добавил роль «Клиент», и я работаю над настройкой экрана «Пользователи» для этой роли. То, что я хотел бы сделать, это настроить столбцы на основе этой конкретной роли.

Заметка:

Например, посмотрите на скриншот. Как удалить ссылку на столбец сообщений только для роли клиента?

Пример текущего экрана «Клиент»

Управление столбцами

Это довольно прямолинейно, используя manage_{post-type-name}_columns : просто переключите на $capability и отмените то, что вам не нужно в массиве $post_columns .

 function wpse19435_manage_columns( $posts_columns ) { // First role: add a column - take a look at the second function if ( current_user_can( $capability_admin ) ) { $posts_columns['some_column_name'] = _x( 'Whatever', 'column name' ); } // second role: remove a column elseif ( current_user_can( $capability_other_role ) ) { unset( $posts_columns['comments'] ); } // default else { // do stuff for all other roles } return $posts_columns; } add_filter( 'manage_{post-type-name}_columns', 'wpse19435_manage_columns' ); 

Добавить столбец

 function wpse19435_manage_single_column( $column_name, $id ) { switch( $column_name ) { case 'some_column_name' : // do stuff break; default : // do stuff break; } } add_action('manage_{post-type-name}_custom_column', 'wpse19435_manage_single_column', 10, 2); 

Спасибо Mike23 за подсказку. Вот код, который я использую, чтобы добавить столбец только к роли «клиента»:

 if( $_GET['role'] == "customer" ) { add_filter('manage_users_columns', 'add_ecommerce_column'); add_filter('manage_users_custom_column', 'manage_ecommerce_column', 10, 3); function add_ecommerce_column($columns) { $columns['ecommerce'] = 'Ecommerce'; return $columns; } function manage_ecommerce_column($empty='', $column_name, $id) { if( $column_name == 'ecommerce' ) { return $column_name.$id; } } } 

Любые идеи или предложения по улучшению очень приветствуются.

Посмотрите на current_user_can . С этим вы можете отфильтровать свой код по ролям, а затем делать все, что хотите настроить интерфейс.

Быстрая и грязная, с CSS. Поместите это в свои functions.php:

 function add_custom_admin_styles() { /* Customers */ if(current_user_can('customer')){ echo ' <style type="text/css"> .column-posts{display:none!important;} </style>'; } } add_action('admin_head', 'add_custom_admin_styles');