Как добавить таксономию в меню Пользователи в админке?

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

Я хочу создать таксономию, связанную с пользователями, поэтому мне хотелось бы показать таксономию в меню “Пользователи” в админке WordPress. В справочнике упоминается, что можно прикрепить таксономию к “nav_menu_item”, но я не могу найти рабочий пример, как это работает. Если я использую:

register_taxonomy( 'expertise', array( 'nav_menu_item' ), $args );

или

register_taxonomy( 'expertise', array( 'users' ), $args );

то это не работает.

Любая помощь будет очень ценна.

Функция register_taxonomy предназначена только для добавления таксономий к существующим типам записей и пользовательским типам записей. Это не то, что можно расширить для пользователей.

Я только что попробовал несколько плагинов, работающих с таксономиями, и ни один из них не может прикрепить таксономию к пользователю.

из http://codex.wordpress.org/Function_Reference/register_taxonomy :

Использование

<?php register_taxonomy( $taxonomy, $object_type, $args ); ?>

$object_type
(массив/строка) (обязательно) Название типа объекта для объекта таксономии. Типы объектов могут быть встроенным типом записи или любым пользовательским типом записи, который может быть зарегистрирован.

Встроенные типы записей:

  • post

  • page

  • attachment
  • revision
  • nav_menu_item.

Пользовательские типы записей:

  • {custom_post_type} – Имена пользовательских типов записей должны быть все строчными и без пробелов.

  • null – Явная установка в null регистрирует таксономию, но не связывает ее с какими-либо объектами, так что она не будет доступна напрямую в пользовательском интерфейсе администрирования. Вам необходимо будет вручную зарегистрировать ее, используя параметр ‘taxonomy’ (переданный через $args) при регистрации пользовательского типа записи (см. register_post_type()), или используя register_taxonomy_for_object_type().

Посмотрите сюда, если хотите писать код:

http://justintadlock.com/archives/2011/10/20/custom-user-taxonomies-in-wordpress

Также есть плагины, вдохновленные этой статьей. Кроме того, есть крупный открытый плагин, который уходит еще дальше – Groups:

https://github.com/itthinx/groups

Ответ или решение

Для того чтобы добавить таксономию в меню пользователей в административной панели WordPress, необходимо учесть несколько ключевых моментов. К сожалению, стандартная функция register_taxonomy не поддерживает прямую привязку таксономий к объекту типа "пользователь". Однако с помощью кастомного кода можно реализовать желаемую функциональность. Ниже приведены четкие шаги, которые помогут вам в этом.

Шаг 1: Регистрация таксономии

Чтобы создать таксономию, связанную с пользователями, нужно использовать хук init и функцию register_taxonomy, но с настройками, которые позволяют привязывать таксономию к пользователям.

function create_user_expertise_taxonomy() {
    $labels = array(
        'name'              => _x('Expertise', 'taxonomy general name', 'textdomain'),
        'singular_name'     => _x('Expertise', 'taxonomy singular name', 'textdomain'),
        'search_items'      => __('Search Expertise', 'textdomain'),
        'all_items'         => __('All Expertise', 'textdomain'),
        'parent_item'       => __('Parent Expertise', 'textdomain'),
        'parent_item_colon' => __('Parent Expertise:', 'textdomain'),
        'edit_item'         => __('Edit Expertise', 'textdomain'),
        'update_item'       => __('Update Expertise', 'textdomain'),
        'add_new_item'      => __('Add New Expertise', 'textdomain'),
        'new_item_name'     => __('New Expertise Name', 'textdomain'),
        'menu_name'         => __('Expertise', 'textdomain'),
    );

    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'public' => false,
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'expertise'),
    );

    register_taxonomy('expertise', 'user', $args);
}
add_action('init', 'create_user_expertise_taxonomy');

Шаг 2: Добавление метабокса на страницу редактирования пользователя

Теперь, когда таксономия зарегистрирована, необходимо добавить метабокс на страницу редактирования пользователя, чтобы администраторы могли назначать соответствующую таксономию для пользователей.

function user_expertise_meta_box() {
    add_meta_box('user_expertise_meta', __('User Expertise', 'textdomain'), 'user_expertise_meta_box_callback', 'user', 'side', 'default');
}
add_action('add_meta_boxes', 'user_expertise_meta_box');

function user_expertise_meta_box_callback($user) {
    $expertise_terms = get_terms(array(
        'taxonomy' => 'expertise',
        'hide_empty' => false,
    ));

    $current_expertise = wp_get_object_terms($user->ID, 'expertise', array('fields' => 'ids'));

    foreach ($expertise_terms as $term) {
        ?>
        <label>
            <input type="checkbox" name="user_expertise[]" value="<?php echo esc_attr($term->term_id); ?>" <?php checked(in_array($term->term_id, $current_expertise)); ?>>
            <?php echo esc_html($term->name); ?>
        </label><br />
        <?php
    }
}

function save_user_expertise($user_id) {
    if (isset($_POST['user_expertise'])) {
        wp_set_object_terms($user_id, intval($_POST['user_expertise']), 'expertise', false);
    } else {
        wp_set_object_terms($user_id, null, 'expertise', false);
    }
}
add_action('edit_user_profile_update', 'save_user_expertise');
add_action('personal_options_update', 'save_user_expertise');

Шаг 3: Обновление интерфейса

Теперь вы сможете видеть таксономию "Expertise" в боковом меню редактирования пользователей. Убедитесь, что вы обновляете интерфейс и проверяете его на различных экранах пользователей.

Заключение

Создание и привязка таксономии к пользователям — это полезный метод для расширения функциональности вашего WordPress сайта, особенно если ваша цель заключается в организации пользователей по определённым категориям. Вы также можете использовать готовые плагины, такие как Groups, которые предоставляют более продвинутые функции для работы с пользователями и их категориями.

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

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

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