У цій статті ми розглянемо, як у WordPress додати кастомну колонку «Відділ» у список користувачів в адмінці, дозволити адміністратору змінювати значення відділу через випадаючий список та виводити обраний відділ на фронтенді для авторизованого користувача.

Спочатку додаємо нову колонку у список користувачів за допомогою фільтра manage_users_columns:
add_filter('manage_users_columns', function($columns) {
$columns['department'] = 'Відділ';
return $columns;
});
Тепер у списку користувачів з’явиться нова колонка «Відділ».
Щоб адміністратор міг змінювати відділ користувача прямо зі списку, використовується manage_users_custom_column:
add_action('manage_users_custom_column', function($value, $column_name, $user_id) {
if ($column_name === 'department') {
$current = get_user_meta($user_id, 'department', true);
$options = [
'' => '— Не обрано —',
'горний цех' => 'Горний цех',
'гараж' => 'Гараж'
];
$html = '<select class="user-department" data-user-id="' . esc_attr($user_id) . '">';
foreach ($options as $val => $label) {
$selected = selected($current, $val, false);
$html .= "<option value='$val' $selected>$label</option>";
}
$html .= '</select>';
return $html;
}
return $value;
}, 10, 3);
Тепер для кожного користувача в колонці «Відділ» відображається <select> з вибором відділу.
Щоб зміни зберігались без перезавантаження сторінки, підключимо скрипт:
add_action('admin_footer-users.php', function() { ?>
<script>
jQuery(document).ready(function($){
$('.user-department').change(function(){
var user_id = $(this).data('user-id');
var department = $(this).val();
$.post(ajaxurl, {
action: 'save_user_department',
user_id: user_id,
department: department,
_wpnonce: '<?php echo wp_create_nonce("save_user_department"); ?>'
}, function(response){
console.log(response);
});
});
});
</script>
<?php });
І додаємо обробник на стороні WordPress:
add_action('wp_ajax_save_user_department', function() {
check_ajax_referer('save_user_department');
if (!current_user_can('edit_users')) wp_die('Нема доступу');
$user_id = intval($_POST['user_id']);
$department = sanitize_text_field($_POST['department']);
update_user_meta($user_id, 'department', $department);
wp_send_json_success('Збережено');
});
Тепер при зміні відділу він одразу зберігається в мета-полі користувача.
Щоб показувати обраний відділ на фронтенді авторизованому користувачу:
<?php
$current_user_id = get_current_user_id();
if ($current_user_id) {
$department = get_user_meta($current_user_id, 'department', true);
if ($department) {
echo '<div class="user-department">Ваш відділ: <strong>' . esc_html(ucfirst($department)) . '</strong></div>';
} else {
echo '<div class="user-department">Ваш відділ не призначено</div>';
}
} else {
echo '<div class="user-department">Ви не авторизовані</div>';
}
?>
Завдяки цьому коду ви отримуєте:
Колонку «Відділ» у списку користувачів в адмінці.
Можливість змінювати відділ через випадаючий список.
Збереження даних через AJAX без перезавантаження.
Вивід поточного відділу користувача на фронтенді.
Хуки активації та ініціалізації у WordPress: Де і коли створювати таблиці
119
Як створити таблицю в WordPress через functions.php: Повний гід по типам даних MySQL
122
Select в HTML: прихований placeholder, підсвічування і динамічний індикатор терміновості
216
Як створити власне меню в адмінці WordPress: простий гайд для новачків
136
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS
337
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS 337
Як виявити блокувальник реклами на сайті за допомогою JavaScript 243
Додавання мета-опису та ключових слів у WordPress 237
Мінімальна сума замовлення WooCommerce 224
Як додати виджет для валют на панель адміністратора WordPress 218
Залишити відповідь