Функционал произвольных таксономий был представлен в версии WordPress 2.9. Он позволяет создавать произвольные группы для записей, страниц и произвольных типов записей.
Представим, что вам нужно создать сайт с каталогом книг и вы уже сделали произвольный тип записей для публикации Книг. Используя произвольные таксономии в можете создать для них, например, Жанр. С таксономией Жанр можно сделать множество элементов типа Фантастика, Детская литература или Биографии для группировки Книг.
К сожалению, мы не можем зарегистрировать произвольную таксономию для Пользователей, таким простым способом как это делается для других типов записей. Однако, мы можем назначить дополнительные свойства пользователя, такие как занятия, профессия или должность вместо регистрации новой Роли Пользователя. Также это дает возможность делать выборку пользователей на основе назначенных им таксономий.
Если такая идея поможет вашему сайту, то сегодняшняя статья — для вас.
Вступление
Первым делом вам необходимо установить и активировать плагин User Taxonomies для того, чтобы упростить работу.
После активации переходим на сайт GenerateWP для того, чтобы сгенерировать коды таксономий. Поместите полученный код в файл functions.php вашей темы. Нижеприведенный код — это пример. Он немного урезан, чтобы не увеличивать объем статьи. Полный же код можно посмотреть по ссылке.
if ( ! function_exists( 'user_staff_position' ) ) { function user_staff_position() { register_taxonomy( 'staff_position', 'post', $args ); } add_action( 'init', 'user_staff_position', 0 ); }
Теперь изменяем параметр Post Type в следующей строке:
register_taxonomy( 'staff_position', 'post', $args );
…с post на user, таким вот образом:
register_taxonomy( 'staff_position', 'user', $args );
Теперь переходим в админку и ищем новое меню в разделе Пользователи как на скриншоте ниже.
Назначаем произвольную таксономию
Переходим в новое меню и создаем несколько термов. Для этого примеры мы создали два элемента: CEO и Менеджеры.
Далее переходим в раздел редактирования пользователя и назначим ему один элемент таксономии.
Выборки пользователей
Мы выведем пользователей в теме в зависимости от назначенного терма таксономии. Но прежде давайте создадим новый шаблон страницы. Мы добавим соответствующий в этот новый шаблон.
В этом конкретном случае мы не будем выполнять запросы к пользователям с помощью get_users или WP_User_Query; когда мы создаем новый класс WP_User_Query, он не выведет Произвольные Таксономии, назначенные пользователю. Justin Tadlock в своей статье показывает как использовать вместо этого функцию get_objects_in_term.
Эта функция выводит ID объекта (а в нашем случае объект означает пользователя), связанного с термом. Для того, чтобы использовать ее, нам необходимо два параметра: Term ID и название таксономии. Term ID можно найти в ссылке браузера при редактировании как на скриншоте ниже:
После того, как вы нашли ID, поместить его в функцию следующим образом:
$users = get_objects_in_term(3, 'user_position');
Можно использовать var_dump() для вывода ID полученных объектов. В нашем случае он возвращает пользователей с ID 1 и 3.
Используя эти ID, мы также можем получить, например, имя пользователя и аватар.
<ul> <?php if ( !emptyempty( $users ) ) : ?> <?php foreach ( $users as $id ) : ?> <li class="user-entry"> <figure><?php echo get_avatar( get_the_author_meta('email', $id), '40' ); ?></figure> <h4 class="user-title"><a href="<?php echo esc_url( get_author_posts_url( $id ) ); ?>"><?php the_author_meta( 'display_name', $id ); ?></a></h4> </li> <?php endforeach; ?> <?php endif; ?> </ul>
…и, наконец, вот он результат.
Вот и все. Не стесняйтесь изменять код под свои нужды. Мы надеемся, что эта статья помогла вам зарегистрировать произвольную таксономию для пользователя WordPress.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.