Буквально на днях я обнаружил, что у меня на блоге есть множество статей, так или иначе связанных с таксономиями, а также описания различных функций для работы с ними, но такого главного, обобщающего поста просто нет.
Начну с того, что таксономии нужны для группировки постов.
Каким образом? Ну возьмём к примеру хэштеги в инстаграм — когда вы постите фото и присваиваете ему теги — это как раз и есть та самая группировка, о которой я говорю. По умолчанию WordPress тоже поддерживает теги для постов, а ещё рубрики. И их можно объединить одним словом — таксономии.
В WP есть стандартные таксономии, а также те, которые разработчики и пользователи создают сами.
Что-то мне подсказывает, что если вы читаете этот пост, то вы уже представляете, что такое рубрики (категории) и метки (теги), что у рубрик есть иерархия, у меток нет и так далее.
А теперь мне нужно донести одну важную мысль.
В WordPress есть своя группа функций для работы с рубриками и отдельная группа функций для работы с метками. Наверняка с какими-то из них вы уже знакомы.
Чуть выше мы с вами определили, что и рубрики и метки являются таксономиями, а это значит, что при работе как с теми, так и с другими вы можете спокойно использовать функции таксономий. Я например так и делаю.
Если рубрики и метки в WordPress были нужны для группировки записей, то данная таксономия, как понятно из названия — для группировки ссылок.
Если вы недавно установили WP, то вы не найдёте их у себя в админке. Дело в том, что с версии 3.5 ссылки по умолчанию сделали отключенными. Но не удалили — вставьте следующий код в файл functions.php
вашей темы и ссылки вновь появятся у вас в админке. Вполне возможно, что вы найдете им применение.
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
Форматы на самом деле с трудом можно назвать таксономией, но фактически это так. На моём блоге им посвящён отдельный пост.
И вот в один прекрасный день наступает момент, когда нам начинает не хватать стандартных рубрик и меток для группировки записей…
Техническую сторону регистрации я подробно описал в статье про функцию register_taxonomy(). Сейчас же мы рассмотрим несколько моментов.
Пример: вы зарегистрировали тип записей — Автомобили, и их нужно группировать скажем по марке, стране и по объему двигателя (хотя объем лучше затолкать в произвольные поля).
Ну во-первых, если вы сами регали таксономию через код, то конечно же надо было сразу указать все типы записей, для которых будет использована группировка по этой таксономии.
Если же изменение параметров регистрирующей функции не в вашей власти (возьмем те же рубрики и метки), тогда вы можете и должны использовать register_taxonomy_for_object_type().
Допустим вы взяли и захотели, чтобы в рубрику можно было добавлять не только записи но и страницы! Тогда код будет следующим:
function kategorii_dlja_stranic(){ register_taxonomy_for_object_type( 'category', 'page'); } add_action( 'init', 'kategorii_dlja_stranic' );
Другие примеры смотрите в описании функции, ссылку на которое я дал вам выше.
Вы знакомы с функцией wp_list_categories()? Если нет, то наверняка видели, как на блогах рубрики выводятся в столбик в виде списка (иногда еще справа в скобках указывается количество постов в рубрике).
Самое интересное, что функция wp_list_categories() позволяет выводить элементы любой таксономии, достаточно лишь указать название таксономии в параметрах функции.
wp_list_categories('taxonomy=car_model');
Где же брать название таксономии?
Более сложный, но в то же время более удобный и настраиваемый вариант — функция get_terms(). Если бы мне предложили выбрать любимую функцию из кодекса, я бы выбрал её — она реально потрясающая.
Тут нам безусловно поможет WP_Query с параметром tax_query
. Подробное описание и примеры смотрите здесь.
Сам я придерживаюсь мнения, что в данном случае лучше обойтись без лишних плагинов, тем не менее вот некоторые бесплатные варианты:
Ссылки наезжают на текст в хроме.
http://savepic.su/5885218.png
Попробуйте почистить кэш. Эта проблема стала возникать после того, как я изменил способ подключения шрифтов в CSS.
А как вы теперь шрифты прогружаете?
Классная штука для организации кулинарного сайта, думаю =) Спасибо за полезную статью, добавила в копилку
Миша, спасибо большое за полезную информацию!
Подписалась на рассылку ))
Миша, а возможно ли задать условие, что если существует meta_key, то соответствующая таксономия будет нажата в метабоксе в админке при добавлении поста?
Условие для meta_key понятно как написать, а что дальше для таксономии писать не очень:
Привет, ну либо через Javascript, либо через
save_post
хук, скорее второе.Михаил, здравствуйте. Раньше в блоге у вас видел, что изредка отвечаете на вопросы)
Вопрос по таксономиям и типам постов. Мне нужно сделать таксономию Блог и, например, Портфолио. Адрес должен быть вида test.com/blog/my_category/post_title, а для Портфолио: test.com/portfolio/my_category/post_title. Пробовал сделать через PODS, но что-то пошло не так. В моем примере будет всего одна категория в чпу, без вложенных. Можете помочь?