Произвольные таксономии — это сущности по типу стандартных рубрик и меток в WordPress. Очень полезны при создании сайтов про книги, фильмы, музыку и тому подобные. Когда вам нужно добавлять много разных по смыслу групп. Например, на сайте с книгами один пост может входить в такие группы: автор, серия, жанр, теги. Если мы будем создавать всех авторов, все жанры и серии в стандартных рубриках, то это будет не очень удобно. Лучше сделать таксономии «Авторы» и «Серии» по типу стандартных меток, как на изображении.
Чтобы создать свою произвольную таксономию нужно в файл function.php вставить код, который я взял на сайте wpincode.com и подредактировал для таксономии по типу меток для Авторов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// *** Регистрация таксономии в стиле тегов Для Авторов //хук в init action и вызов create_autors_nonhierarchical_taxonomy когда хук сработает add_action( 'init', 'create_autors_nonhierarchical_taxonomy', 0 ); function create_autors_nonhierarchical_taxonomy() { // Задание названия для интерфейса $labels = array( 'name' => _x( 'Авторы', 'taxonomy general name' ), 'singular_name' => _x( 'Автор', 'taxonomy singular name' ), 'search_items' => __( 'Найти автора' ), 'popular_items' => __( 'Популярные авторы' ), 'all_items' => __( 'Все авторы' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Редактировать автора' ), 'update_item' => __( 'Обновить автора' ), 'add_new_item' => __( 'Добавить нового автора' ), 'new_item_name' => __( 'Новое имя автора' ), 'separate_items_with_commas' => __( 'Разделяйть авторов запятыми' ), 'add_or_remove_items' => __( 'Добавить или удалить автора' ), 'choose_from_most_used' => __( 'Выберите из наиболее часто используемых авторов' ), 'menu_name' => __( 'Авторы' ), ); // Теперь регистрируем НЕ-иерархическую таксономию типа Тегов register_taxonomy('autors','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' => 'autors' ), )); } |
ВАЖНО! Если нужна таксономия как по типу стандартных рубрик в Вордпрессе, то нужно в
'hierarchical' =>
установить значениеtrue
, а не false.
Значение autors
в array( 'slug' => 'autors' )
— это задание URL, т.е. будет http://site.net/autors/
. Так что оно не обязательно должно совпадать с autors
который в register_taxonomy('autors','post',
из примера.
Далее необходимо сделать так, чтобы эта новая таксономия где-то выводились. Поэтому я сделал файл autors-book.php в корневой папке темы и скопировал туда весь код из файла category.php
, а потом добавил следующий код в файл index.php
:
1 2 3 4 5 6 7 |
// категория Авторы elseif (is_tax(autors) ) { get_template_part( '/autors-book' ); } |
Если конкретней, то я вставил этот код в начале файла, в конструкцию if ( is_tag() )...
перед последним else
и выглядит это так:
Стоит отметить, что autors в is_tax(autors)
, это значение, которое указывалось в register_taxonomy('autors',...
Вроде, всё.