Добавление пользовательской колонки в панель администрирования пользователей

6 сент. 2014 г., 14:00:48
Просмотры: 81.6K
Голосов: 42

По умолчанию в разделе ПОЛЬЗОВАТЕЛИ есть 5 колонок: Логин, Имя, Email, Роль и Записи. Теперь я хочу добавить еще одну колонку с контактным номером пользователя.

Как это можно реализовать?

Демонстрация места добавления новой колонки в админ-панели пользователей

5
Комментарии

У вас настроен телефонный номер? То есть, может ли пользователь добавить номер телефона в свой профиль?

Robert hue Robert hue
6 сент. 2014 г. 14:08:03

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

Rohil_PHPBeginner Rohil_PHPBeginner
6 сент. 2014 г. 14:09:36

Если на вашем сайте много пользовательских колонок, вам может быть интересен плагин под названием Admin Columns.

somebodysomewhere somebodysomewhere
1 июн. 2016 г. 22:13:48

вы можете ознакомиться с подробным объяснением в этом блоге http://tekina.info/add-extra-column-user-listing-page-wordpress-admin-panel/

Aniket Singh Aniket Singh
12 сент. 2017 г. 20:20:38

Для тех, кто не знаком с программированием, есть плагин Advanced Custom Fields. (Google также приводит на эту страницу. Новички могут не знать всех плагинов WordPress)

koppor koppor
12 июл. 2020 г. 16:37:28
Все ответы на вопрос 1
17
67

Хорошо, вот код, который позволит вашим пользователям добавлять номера телефонов. Вставьте этот полный код в файл functions.php. Это добавит новое поле "Номер телефона" в профиль пользователя и колонку в таблицу пользователей в админке WordPress.

function new_contact_methods( $contactmethods ) {
    $contactmethods['phone'] = 'Номер телефона';
    return $contactmethods;
}
add_filter( 'user_contactmethods', 'new_contact_methods', 10, 1 );


function new_modify_user_table( $column ) {
    $column['phone'] = 'Телефон';
    return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table' );

function new_modify_user_table_row( $val, $column_name, $user_id ) {
    switch ($column_name) {
        case 'phone' :
            return get_the_author_meta( 'phone', $user_id );
        default:
    }
    return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );

РЕДАКТИРОВАНИЕ

Чтобы добавить две колонки, вам нужно внести некоторые изменения. Сравните оба кода, чтобы понять различия.

function new_modify_user_table( $column ) {
    $column['phone'] = 'Телефон';
    $column['xyz'] = 'XYZ';
    return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table' );

function new_modify_user_table_row( $val, $column_name, $user_id ) {
    switch ($column_name) {
        case 'phone' :
            return get_the_author_meta( 'phone', $user_id );
        case 'xyz' :
            return '';
        default:
    }
    return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );
6 сент. 2014 г. 14:10:28
Комментарии

Используйте код снова. Я изменил его, чтобы поле телефона тоже отображалось в списке пользователей.

Robert hue Robert hue
6 сент. 2014 г. 14:20:52

Отлично! Сработало... Но почему при добавлении пользователя не запрашивается номер телефона?

Rohil_PHPBeginner Rohil_PHPBeginner
6 сент. 2014 г. 14:23:28

Можете, пожалуйста, объяснить этот код? Я хочу добавить еще одно поле, но получаю ошибку.

Rohil_PHPBeginner Rohil_PHPBeginner
6 сент. 2014 г. 14:42:11

Проверьте правки в приведенном выше коде. Вы можете добавить столько столбцов, сколько захотите.

Robert hue Robert hue
6 сент. 2014 г. 15:04:19

Я бы предложил добавить это в специфичный для сайта плагин, так как это не связано с внешним видом темы.

helgatheviking helgatheviking
6 сент. 2014 г. 19:57:06

спасибо, Роберт .. ты мне очень помог!! можешь просто сказать последнее .. что означают 10 & 3 в последней строке кода ..

Rohil_PHPBeginner Rohil_PHPBeginner
6 сент. 2014 г. 21:34:31

Это приоритет и принимаемые аргументы. Проверьте документацию по add_filter здесь, http://codex.wordpress.org/Function_Reference/add_filter

Robert hue Robert hue
6 сент. 2014 г. 21:38:31

Если это коммерческая тема (бесплатная или платная), пожалуйста, не вставляйте этот код в functions.php темы. Потому что вы можете потерять эти изменения при обновлении темы. Создайте небольшой плагин для этого.

Omar Tariq Omar Tariq
28 апр. 2015 г. 00:33:53

что такое $return?

Mateusz Bartkowski Mateusz Bartkowski
4 февр. 2016 г. 14:25:26

Да, зачем в конце стоит return $return, объясните, пожалуйста?

LoicTheAztec LoicTheAztec
30 мар. 2016 г. 09:09:28

В итоге $user = get_userdata( $user_id ); и return $return абсолютно не нужны. Переменная $user не используется функцией, а $return не определена, поэтому возвращается ничего.

LoicTheAztec LoicTheAztec
30 мар. 2016 г. 13:03:33

Привет @Robert hue, спасибо за рабочий код. У меня один вопрос. Я не вижу эту колонку в своей таблице wp_users в базе данных. Почему?

Ana DEV Ana DEV
3 мая 2016 г. 12:35:01

Я ничего не получаю из этой функции new_modify_user_table_row( $val, $column_name, $user_id ). Можете подсказать, почему?

Deepak saini Deepak saini
27 мая 2016 г. 15:37:28

@Roberthue есть ли способ изменить порядок столбцов?

JohnnyQ JohnnyQ
8 июн. 2016 г. 15:04:30

А, нашел здесь.

JohnnyQ JohnnyQ
8 июн. 2016 г. 15:14:23

Очень придирчиво, но, вероятно, нам не нужен break;, так как мы уже делаем return в строках выше. Тем не менее, спасибо за публикацию — это действительно помогло.

Daniel Casserly Daniel Casserly
11 окт. 2017 г. 18:19:07

Не лучше ли, как мне кажется, поместить этот код в плагин или /wp-admin, а не в папку темы? Если оставить его в папке темы, например, functions.php, он, скорее всего, будет перезаписан при обновлении темы.

Travis Patron Travis Patron
11 февр. 2021 г. 00:54:46
Показать остальные 12 комментариев