Многие люди считают WordPress инструментом исключительно для блоггинга, потому как в ВП есть записи, рубрики, теги и т.д. Чего большинство из них не знает, так это того, что все записи, рубрики и теги могут быть заменены произвольными типами записей и произвольными таксономиями. В этой статье мы покажем вам как создать произвольную таксономию в WordPress, а также как вывести эту таксономию в своей теме WordPress.
Что такое таксономия?
Таксономия в WordPress — это одна из тех вещей, которую все используют, но не знают, что они используют именно ее. Таксономии WordPress используются для группировки записей и произвольных типов записей между собой. В ВП есть две самых популярных таксономии, которые люди постоянно используют: Рубрики и Теги. Можно использовать произвольные таксономии для создания произвольных групп и объединения их под одним «началом». Например, у вас есть произвольный тип записи под названием Книги. Даже если вы используете рубрики, возможно вы не хотите смешивать два вида Книг между собой, потому что они в корне отличаются друг от друга. Для решения этой проблемы можно зарегистрировать новую произвольную таксономию под названием Тематики. Можно добавить термы тематик типа: Приключения, Романы, Фантастика и т.д. Это позволит вам и вашим пользователям сортировать книги по тематикам. Таксономии также могут иметь иерархию, что означает у вас могут быть основные тематики типа: Фентези, Фантастика и Детские. А уже у этих тематик могут быть подтемы в каждой рубрике, как например в разделе Фентези могут быть триллеры в виде подтемы.
Теперь, когда мы прояснили, что такое произвольная таксономия, давайте выясним как создавать произвольные таксономии в WordPress. Мы покажем два способа создания произвольных таксономий. Способ 1 будет использовать плагин для тех, кто не захочет возиться с кодом. Способ 2, напротив же, будет использовать код и подойдет для тех, кто предпочитает делать всё без помощи плагинов.
Создание произвольных таксономий — Простой способ
Давайте же начнем создание произвольной таксономии. Первым делом вам необходимо установить и активировать плагин Simple Taxonomy. Далее, переходим в раздел Настройки » Custom Taxonomies где и создаем новую:
В начале создания произвольной таксономии нужно задать ей название, которое должно состоять из строчных букв и НЕ содержать «странных» символов. Второй опцией мы задаем будет ли эта таксономия иерархической. Если вы хотите создать таксономию типа рубрик, где сможете добавлять родительские и дочерние термы, тогда выбирайте True, иначе же — задавайте false, если вы хотите чтобы термы добавлялись как теги.
Третья опция позволяет ассоциировать эту таксономию с типом записей, а последняя — разрешит указать, нужно ли добавлять термы автоматически, выберите none.
Но мы еще не закончили. Давайте предположим, что вы создаете таксономию и назвали ее Тематики. Теперь нужно сообщить WordPress, как она должна переводиться в интерфейсе пользователя.
После указания переводов для интерфейса, нажмите на кнопку Add Taxonomy. После того, как произвольная таксономия будет создана, она появится под меню Записи и будет выглядеть так же как и Рубрики, и Теги. Также поле произвольной таксономии появится в в окне редактора записей.
Создание произвольных таксономий вручную
Добавляем следующий код в файл functions.php вашей темы или в плагин для сайта WordPress (рекомендуется) для создания иерархической произвольной таксономии типа рубрик:
//хук в init action и вызов create_book_taxonomies когда хук сработает add_action( 'init', 'create_topics_hierarchical_taxonomy', 0 ); //задаем название для произвольной таксономии Topics для ваших записей function create_topics_hierarchical_taxonomy() { // Добавляем новую таксономию, делаем ее иерархической вроде рубрик // также задаем перевод для интерфейса $labels = array( 'name' => _x( 'Topics', 'taxonomy general name' ), 'singular_name' => _x( 'Topic', 'taxonomy singular name' ), 'search_items' => __( 'Search Topics' ), 'all_items' => __( 'All Topics' ), 'parent_item' => __( 'Parent Topic' ), 'parent_item_colon' => __( 'Parent Topic:' ), 'edit_item' => __( 'Edit Topic' ), 'update_item' => __( 'Update Topic' ), 'add_new_item' => __( 'Add New Topic' ), 'new_item_name' => __( 'New Topic Name' ), 'menu_name' => __( 'Topics' ), ); // Теперь регистрируем таксономию register_taxonomy('topics',array('post'), array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'topic' ), )); }
Для создания не-иерархической произвольной таксономии типа Теги, добавьте следующий код в файл functions.php вашей темы или в плагин для сайта WordPress (рекомендуется):
//хук в init action и вызов create_topics_nonhierarchical_taxonomy когда хук сработает add_action( 'init', 'create_topics_nonhierarchical_taxonomy', 0 ); function create_topics_nonhierarchical_taxonomy() { // Задаем названия для интерфейса $labels = array( 'name' => _x( 'Topics', 'taxonomy general name' ), 'singular_name' => _x( 'Topic', 'taxonomy singular name' ), 'search_items' => __( 'Search Topics' ), 'popular_items' => __( 'Popular Topics' ), 'all_items' => __( 'All Topics' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Edit Topic' ), 'update_item' => __( 'Update Topic' ), 'add_new_item' => __( 'Add New Topic' ), 'new_item_name' => __( 'New Topic Name' ), 'separate_items_with_commas' => __( 'Separate topics with commas' ), 'add_or_remove_items' => __( 'Add or remove topics' ), 'choose_from_most_used' => __( 'Choose from the most used topics' ), 'menu_name' => __( 'Topics' ), ); // Теперь регистрируем НЕ-иерархическую таксономию вроде Тегов register_taxonomy('topics','post',array( 'hierarchical' => false, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'query_var' => true, 'rewrite' => array( 'slug' => 'topic' ), )); }
Обратите внимание на различия между двумя кодами. Значение для параметра иерархии — true для таксономии типа Рубрики, и false — для таксономий типа Тегов. Также в массиве названий для НЕ-иерархической таксономии типа Тегов мы добавили null для параметров parent_item и parent_item_colon, что означает, что в интерфейсе ничего не будет отображаться при создании родительского элемента.
Выводим произвольные таксономии
Вот так можно вывести термы, которые вы добавили в произвольную таксономию на отдельной странице записи. Добавьте следующую строку кода в свой файл single.php внутри цикла:
<?php the_terms( $post->ID, 'topics', 'Topics: ', ', ', ' ' ); ?>
Можно добавить его в другие файлы, такие как archive.php, index.php, и в другое место по необходимости, где нужно вывести таксономию.
По-умолчанию ваши произвольные таксономии используют шаблон archive.php для отображения записей. Однако, вы можете создать собственный архив для их отображения по такому принципу — taxonomy-{taxonomy-slug}.php.
Произвольные таксономии могут использовать различными способами. Совмещение их с произвольными типами записей и произвольными мета-блоками помогут вам создать хорошо настраиваемую систему управления контентом (CMS), которая максимально будет соответствовать вашим задачам.
Напишите, как вы используете произвольные таксономии на своих сайтах.
По всем вопросам и отзывам просьба также писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.