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

Хорошо, вот код, который позволит вашим пользователям добавлять номера телефонов. Вставьте этот полный код в файл 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 );

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

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

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

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

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

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

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

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

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

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

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

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

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

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