Вопрос или проблема
Я хочу добавить поле/столбец для супер администратора/мультisite сети на странице “Все пользователи”. Я хочу отобразить столбец под названием “компания” для каждого пользователя. Как мне это сделать? Я могу сделать так, чтобы это отображалось на странице “Все пользователи” каждого сайта, но не на страницах сети администраторов.
Спасибо!
//Добавить столбец на панель пользователя сети администраторов
function add_user_columns( $defaults ) {
$defaults['company'] = __('Компания', 'user-column');
return $defaults;
}
add_filter('wpmu_users_columns', 'add_user_columns', 15, 1);
//Вывести данные пользователя в новом столбце
function add_custom_user_columns($value, $column_name, $id) {
if( $column_name == 'company' ) {
return get_the_author_meta( 'company', $id );
}
}
add_action('wpmu_users_custom_column', 'add_custom_user_columns', 15, 3);
Эта функция взята напрямую из функции, которая работает в обычном списке пользователей (не сети). Я заменил manage_users_columns на wpmu_users_columns и manage_users_custom_column на wpmu_users_custom_column. Но это не работает в списке пользователей сети.
Это все, что вам нужно, чтобы добавить столбец в таблицу пользователей сети, разместить его перед выбранным столбцом и добавить в него данные.
add_filter( 'wpmu_users_columns', 'my_awesome_new_column' );
add_action( 'manage_users_custom_column', 'my_awesome_column_data', 10, 3 );
// Создает новый столбец в таблице пользователей сети и размещает его перед выбранным столбцом
function my_awesome_new_column( $columns ) {
return my_awesome_add_element_to_array( $columns, 'my-awesome-column', 'Потрясающе', 'registered' );
}
// Добавляет данные в наш новый столбец
function my_awesome_column_data( $value, $column_name, $user_id ) {
// Если это наш столбец, мы возвращаем наши данные
if ( 'my-awesome-column' == $column_name ) {
return 'Потрясающий ID пользователя ' . intval( $user_id );
}
// Если это не один из наших пользовательских столбцов, мы просто возвращаем обычные данные
return $value;
}
// Добавляет новый элемент в массив в точном месте, где мы хотим (если возможно).
function my_awesome_add_element_to_array( $original_array, $add_element_key, $add_element_value, $add_before_key ) {
// Эта переменная показывает, удалось ли нам добавить элемент, где мы хотели
$added = 0;
// Это будет новый массив, он включит наш элемент, расположенный там, где мы хотим
$new_array = array();
// Мы проходим через все текущие элементы и добавляем наш новый элемент на место, где мы хотим
foreach( $original_array as $key => $value ) {
// Мы помещаем элемент перед ключом, который нам нужен
if ( $key == $add_before_key ) {
$new_array[ $add_element_key ] = $add_element_value;
// Нам удалось добавить элемент туда, где мы хотели, так что нет необходимости добавлять его снова позже
$added = 1;
}
// Все обычные элементы остаются и добавляются в новый массив, который мы сделали
$new_array[ $key ] = $value;
}
// Если нам не удалось добавить элемент ранее (потому что ключ, перед которым мы пытались его добавить, отсутствует), мы добавляем его теперь в конец
if ( 0 == $added ) {
$new_array[ $add_element_key ] = $add_element_value;
}
// Мы возвращаем новый массив, который мы сделали
return $new_array;
}
ОБНОВЛЕНИЕ – Как сделать столбец сортируемым
Используйте этот фильтр-хук
add_filter('manage_users-network_sortable_columns', '');
Ссылка здесь – она работает так же, как manage_users_sortable_columns
, который является стандартным для таблицы пользователей одного сайта.
Ответ или решение
Как добавить пользовательский столбец "Компания" на странице всех пользователей в сети инструментов WordPress
Если вы являетесь администратором сети WordPress и хотите добавить собственное поле/столбец для отображения данных о "Компании" в административной панели пользователей сети, вы на правильном пути, следуя за предоставленным кодом. Ниже мы детализируем необходимые шаги, чтобы это сделать, а также добавим дополнительный функционал, например, сортировку.
Шаги для добавления нового столбца
-
Добавление пользовательского столбца
Для начала, вам нужно добавить код, который определяет структуру столбцов на странице всех пользователей сети. Используя фильтрwpmu_users_columns
, вы можете добавить новый столбец "Компания":add_filter('wpmu_users_columns', 'my_awesome_new_column'); function my_awesome_new_column( $columns ) { $columns['company'] = __('Компания', 'user-column'); // Добавляем новый столбец // Можно добавить в желаемое место, например перед другим столбцом return $columns; }
-
Вывод данных в пользовательском столбце
Далее, необходимо обеспечить отображение информации из метаполя "company" в новом столбце. Для реализации этого можно воспользоваться действиемwpmu_users_custom_column
:add_action('wpmu_users_custom_column', 'my_awesome_column_data', 10, 3); function my_awesome_column_data( $value, $column_name, $user_id ) { if ( 'company' == $column_name ) { return get_the_author_meta( 'company', $user_id ); // Получаем данные о компании } return $value; // Возвращаем стандартное значение для остальных столбцов }
Эти две функции позволят вам успешно добавить и заполнить новый столбец "Компания" на странице всех пользователей сети.
Добавление сортируемости столбца
Для того чтобы столбец "Компания" можно было сортировать, вам нужно добавить еще одну фильтрацию, которая делает столбец сортируемым:
add_filter('manage_users-network_sortable_columns', 'my_sortable_columns');
function my_sortable_columns( $columns ) {
$columns['company'] = 'company'; // Указываем, что столбец "company" можно сортировать
return $columns;
}
С помощью этого дополнения администраторы смогут сортировать пользователей по их компаниям, что значительно облегчит управление пользователями в многосайтовой сети.
Заключение
Введение нового столбца на странице пользователей сети WordPress не только улучшает функциональность администраторского интерфейса, но и значительно увеличивает удобство работы с пользователями. Приведенные выше функции легко интегрируются в ваш файл functions.php
темы или в плагин, разработанный для расширения функциональности (если вы используете его).
Эти шаги являются отличным примером возможности кастомизации WordPress и позволяют адаптировать систему управления пользователями под специфические требования вашего проекта. Надеюсь, этот пример будет полезен для достижения ваших целей в управлении пользователями сети.