Таксономии

Урок 20

Зарегистрируйтесь или войдите и получите бесплатный доступ к первым 3-м урокам курса.

Урок 20

Таксономии

Таксономии — это такие сущности, которые нужны для группировки постов (записей, страниц или постов произвольного типа).

Если вы работали с WordPress, то наверняка уже работали и с таксономиями. Потому что «Рубрики» и «Метки» у записей как раз-таки и являются таксономиями!

Итак, несколько моментов по работе с таксономиями:

  • по умолчанию в WordPress уже есть несколько стандартных таксономий – это рубрики category, метки post_tag, меню nav_menu и форматы постов post_format,
  • таксономии бывают древовидные (как рубрики) и недревовидные (как метки),
  • мы можем зарегистрировать свои собственные таксономии для любых типов записей,
  • таксономия может быть привязана к нескольким типам записей сразу,
  • в базе данных под таксономии выделены аж четыре таблицы wp_terms, wp_term_taxonomy, wp_term_relationships и wp_termmeta.

Если вам уже не терпиться заняться практикой, то скорее включайте видео, я же расскажу ещё несколько моментов по порядку.

Чтобы скачать тему WordPress, которая получилась у нас в процессе этого урока, необходимо приобрести курс.

Стандартные таксономии в WordPress

Рубрики и метки

Рубрики и метки – это публичные таксономии WordPress, которые по умолчанию имеют отношение только к обычным записям.

рубрики и метки

Тут есть один важный исторический момент, о котором не нужно забывать. Когда WordPress только появился, у него не было не произвольных типов постов, ни произвольных таксономий, были только «Записи», «Страницы», «Рубрики», «Метки» (грубо говоря), благодаря чему функции по работе с таксономиями делятся на три группы – функции для рубрик, функции для меток, функции для таксономий, но по факту на сегодняшний день большинство из них не отличаются и, скажем, вы спокойно можете использовать функцию get_category_link() для получения URL страницы метки.

Меню

Когда мы говорим о меню, то можем говорить о двух сущностях:

  • таксономия nav_menu, которая является самим меню (Меню 1, Меню 2, Меню в футере и n&l)
  • тип записи nav_menu_item, который является ссылками в меню.

Для наглядности чекаем скриншот:

таксономия nav_menu в WordPress
Итак, на этом скриншоте элементы таксономии (термины) nav_menu это «главное меню», «меню в футере» и «О компании», а посты типа nav_menu_item это ссылки «Главная» и «Контакты»

Форматы постов

Форматы на самом деле с трудом можно назвать таксономией, но фактически это так. На моём блоге им посвящён отдельный пост.

форматы постов WordPress

Древовидные и недревовидные таксономии

Если мы говорим о стандартных таксономиях WordPress, то среди них только рубрики являются древовидными, то есть это когда у элементов таксономий могут быть дочерние элементы.

пример древовидной таксономии

Древовидность таксономии также отразиться и на URL-ах самих терминов, например страница категории «kenzo» может иметь URL: http://сайт/category/ryukzaki/brendy/kenzo.

Также интерфейс древовидных и недревовидных таксономий на странице редактирования записи отличается. Древовидные выводятся в виде списка чекбоксов:

блок с выбором рубрик

Недревовидные вот так:

блок выбора меток

Хотя у меня был древний урок на сайте, где я рассказывал, как это поменять.

Пользовательские таксономии

И вот в один прекрасный день наступает момент, когда нам начинает не хватать стандартных рубрик и меток для группировки постов. Конечно такое может и не произойдёт для стандартных записей и страниц, но если вы используете произвольные типы записей, то вполне вероятно.

Например в видеоуроке мы регистрируем таксономию «Страны», по которым будут фильтроваться лиды, поступающие с сайта.

создание произвольной таксономии в WordPress

Никогда! Не используйте плагины для регистрации типов записей.

Объясню почему. Смотрите, чтобы зарегистрировать таксономию, вам достаточно примерно вот такого кода:

add_action( 'init', function() {
	register_taxonomy( 'country', 'lead', array( 'public' => true ) );
});

Понятное дело, что если вы хотите всё супер-детально настроить, то параметров у функции будет чуть больше, подробно я их всех описал тут.

Одна из глобальных проблем WordPress – это то, что некоторые «разработчики» (я их ещё называю настройщиками) приходят в такой ужас от этих трёх строчек кода, что решают установить тяжеловесный плагин, который позволит им зарегистрировать таксономию через интерфейс в админке, что уже само по себе в корне неправильно, потому что мы получаем дополнительные запросы в базу данных для получения параметров, типо как 'public' => true, который в моём случае написан прямо в коде и жрёт 0 производительности вместо 100500. Да, до сих пор не могу понять этих людей :)

Как присваивать таксономии к различным типам записей

Ну во-первых, если вы сами регали таксономию через код, то конечно же надо было сразу указать все типы записей, для которых будет использована группировка по этой таксономии.

Если же изменение параметров регистрирующей функции не в вашей власти (возьмем те же рубрики и метки), тогда вы можете и должны использовать register_taxonomy_for_object_type() для прикрепления таксономий и unregister_taxonomy_for_object_type(), чтобы наоборот откреплять таксономии..

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

add_action( 'init', 'true_kategorii_dlja_stranic' );
 
function true_kategorii_dlja_stranic(){
	register_taxonomy_for_object_type( 'category', 'page');
}

Вывод элементов таксономий (терминов) на сайте, а также их постов

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

ФункцияДля чего
get_terms()Супер-удобна для получения терминов любых таксономий по определённым критериям.
get_the_terms()Для вывода терминов поста.
WP_Query (параметр tax_query)Для вывода постов.

Где же брать название таксономии для этих функций?

  • Если таксономию создавали вы сами, то этот вопрос у вас не должен возникать.
  • Если же нет, то просто откройте страницу этой таксономии и посмотрите на ссылку в браузере:Как узнать название таксономии в WP?
Купить курс
  • 21 видеоурок
  • Можно скачать готовый код после каждого урока
  • Уроки актуальны под последние версии WordPress
  • Можно начать проходить курс сразу же после оплаты
  • Достаточно базовых знаний HTML и CSS, чтобы пройти курс
  • Доступ навсегда
  • Единоразовый платёж
5000 р3500 р
Скидка 30% до 23 мая

Нажав на кнопку, вы соглашаетесь c условиями предоставления услуг и с обработкой персональных данных.