Пользовательский столбец под Все пользователи (администратор мультисайта)?

Вопрос или проблема

Я хочу добавить поле/столбец для супер администратора/мульт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 и хотите добавить собственное поле/столбец для отображения данных о "Компании" в административной панели пользователей сети, вы на правильном пути, следуя за предоставленным кодом. Ниже мы детализируем необходимые шаги, чтобы это сделать, а также добавим дополнительный функционал, например, сортировку.

Шаги для добавления нового столбца

  1. Добавление пользовательского столбца
    Для начала, вам нужно добавить код, который определяет структуру столбцов на странице всех пользователей сети. Используя фильтр wpmu_users_columns, вы можете добавить новый столбец "Компания":

    add_filter('wpmu_users_columns', 'my_awesome_new_column');
    
    function my_awesome_new_column( $columns ) {
       $columns['company'] = __('Компания', 'user-column'); // Добавляем новый столбец
       // Можно добавить в желаемое место, например перед другим столбцом
       return $columns;
    }
  2. Вывод данных в пользовательском столбце
    Далее, необходимо обеспечить отображение информации из метаполя "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 и позволяют адаптировать систему управления пользователями под специфические требования вашего проекта. Надеюсь, этот пример будет полезен для достижения ваших целей в управлении пользователями сети.

Оцените материал
Добавить комментарий

Капча загружается...