что такое таксономия в wordpress
Создание таксономии WordPress
Содержание
1. Что такое таксономия WordPress?
Перед тем как, что то создавать, нужно разобраться с базовыми понятием таксономии. Что это такое?
В WordPress под таксономией понимается некое абстрактное пространство, с помощью которого происходит группировка записей(постов) по определенному признаку.
К примеру существует стандартная таксономия «Рубрки» на англ. версии WP «Category». С ее помощью мы можем сгруппировать записи по признакам: новости, статьи, полезная информация и.т.п. По простому мы называем это все «категориями». Но на самом деле это таксономия «Рубрики».
«Метки» это тоже таксономия на англ. версии «tags», только элементы этой таксономии не имеют наследования(родителей).
2. Типы таксономий.
Существует два типа таксономий:
1. Древовидные(иерархический) — имеет вложенность, родительские и дочернии элементы. Пример: Рубрки(category).
2. Линейные (плоские)— не имеет вложенности. Пример: Метки(tags).
3. Как создать таксономию.
И так. Как же создать кастомную(произвольную) таксономию в WordPress. Существует два способа:
Способ первый. С помощью функции register_taxonomy().
Функция register_taxonomy() — регистрирует кастомную(произвольную) таксономию.
Пример. Создадим таксономию mycat для типа записей(post type) «записи» или по простому для постов.
Таксономии
Начну с того, что таксономии нужны для группировки постов.
Каким образом? Ну возьмём к примеру хэштеги в инстаграм — когда вы постите фото и присваиваете ему теги — это как раз и есть та самая группировка, о которой я говорю. По умолчанию WordPress тоже поддерживает теги для постов, а ещё рубрики. И их можно объединить одним словом — таксономии.
В WP есть стандартные таксономии, а также те, которые разработчики и пользователи создают сами.
1. Стандартные таксономии в WordPress
Рубрики и метки
Что-то мне подсказывает, что если вы читаете этот пост, то вы уже представляете, что такое рубрики (категории) и метки (теги), что у рубрик есть иерархия, у меток нет и так далее.
А теперь мне нужно донести одну важную мысль.
В WordPress есть своя группа функций для работы с рубриками и отдельная группа функций для работы с метками. Наверняка с какими-то из них вы уже знакомы.
Чуть выше мы с вами определили, что и рубрики и метки являются таксономиями, а это значит, что при работе как с теми, так и с другими вы можете спокойно использовать функции таксономий. Я например так и делаю.
Рубрики ссылок
Если рубрики и метки в WordPress были нужны для группировки записей, то данная таксономия, как понятно из названия — для группировки ссылок.
Если вы недавно установили WP, то вы не найдёте их у себя в админке. Дело в том, что с версии 3.5 ссылки по умолчанию сделали отключенными. Но не удалили — вставьте следующий код в файл functions.php вашей темы и ссылки вновь появятся у вас в админке. Вполне возможно, что вы найдете им применение.
Форматы постов
Форматы на самом деле с трудом можно назвать таксономией, но фактически это так. На моём блоге им посвящён отдельный пост.
2. Пользовательские таксономии
И вот в один прекрасный день наступает момент, когда нам начинает не хватать стандартных рубрик и меток для группировки записей…
Чуть подробнее про регистрацию таксономии
Техническую сторону регистрации я подробно описал в статье про функцию register_taxonomy(). Сейчас же мы рассмотрим несколько моментов.
Пример: вы зарегистрировали тип записей — Автомобили, и их нужно группировать скажем по марке, стране и по объему двигателя (хотя объем лучше затолкать в произвольные поля).
Как присваивать таксономии к различным типам записей
Ну во-первых, если вы сами регали таксономию через код, то конечно же надо было сразу указать все типы записей, для которых будет использована группировка по этой таксономии.
Если же изменение параметров регистрирующей функции не в вашей власти (возьмем те же рубрики и метки), тогда вы можете и должны использовать register_taxonomy_for_object_type().
Допустим вы взяли и захотели, чтобы в рубрику можно было добавлять не только записи но и страницы! Тогда код будет следующим:
Другие примеры смотрите в описании функции, ссылку на которое я дал вам выше.
Вывод таксономий в виде списка
Вы знакомы с функцией wp_list_categories()? Если нет, то наверняка видели, как на блогах рубрики выводятся в столбик в виде списка (иногда еще справа в скобках указывается количество постов в рубрике).
Самое интересное, что функция wp_list_categories() позволяет выводить элементы любой таксономии, достаточно лишь указать название таксономии в параметрах функции.
Где же брать название таксономии?
Более сложный, но в то же время более удобный и настраиваемый вариант — функция get_terms(). Если бы мне предложили выбрать любимую функцию из кодекса, я бы выбрал её — она реально потрясающая.
Вывод постов из таксономии
3. Плагины для работы с таксономиями
Сам я придерживаюсь мнения, что в данном случае лучше обойтись без лишних плагинов, тем не менее вот некоторые бесплатные варианты:
Некоторые из функций для работы с таксономиями
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Таксономии в WordPress
Что такое таксономии в WordPress? Кто не знает, и тем кто думает, что знает о таксономиях все, будет полезно прочитать эту статью. Я подробно разберу что скрывается под этим странным словом, что оно значит в WordPress и как таксономии устроены. Думаю, в этом разборе что-то полезное найдет каждый.
Читайте также, как устроенны записи в WordPress
Читайте также, как устроенны метаполя в WordPress
О таксономиях
Образно, таксономии можно сравнить с папками на компьютере: куда складываются файлы. Заходим в папку, видим список файлов. В WordPress аналогично: заходим в таксономию (рубрику), видим список записей в ней.
Типы таксономий
Отличия. Элементы древовидных такс. могут быть родительскими и дочерними, т.е. одни элементы как бы вложены в другие. А элементы плоских такс. всегда сами по себе, т.е. все они находятся на одном уровне, а значит не зависят друг от друга.
Схематически это выглядит как-то так:
меню
Базовые таксономии WordPress
По умолчанию в WordPress существует пять таксономии:
Создание своих таксономий
Создается таксономия с помощью функции register_taxonomy() или соответствующего плагина, например, «Custom Post Type UI». При этом, как я уже говорил, в базу данных ничего не добавляется, а создается только описание таксономии и её свойств в глобальной переменной PHP и в правилах ЧПУ. Как только был создан хоть один элемент таксономии, в БД появляется запись о новом термине, а к нему уже можно прикрепить запись.
При создании таксономии, ей можно указать самые разные свойства (опции), например:
тип: древовидная или плоская.
тип записи для которой создается такса, тогда при редактировании записи в админке появится блок, где можно добавить запись в таксономию (связать запись с термином). Например таким блоком является блок рубрик при редактировании записи.
как будет выглядеть ссылка на элемент таксономии. Эта «хрень» называется ЧПУ (человеко-понятный УРЛ).
можно создать скрытую таксономию, тогда её нигде не будет видно, в частности в админке, но её можно использовать как-то нестандартно, чтобы группировать записи или делать что-то еще. Так например, плагины галерей связывают галереи или отдельные картинки.
Почему нужно создавать произвольные таксономии?
Если везде использовать Рубрики, то довольно быстро ваш код превратиться в кашу. В результате расширять функционал сайта будет все сложнее, а скорость работы будет все медленнее.
Так может выглядеть запрос, когда нужно получить дешевые дома в Воронеже:
А если тоже самое сделать с рубриками, то код получится больше, будет менее понятный и быстрый.
Структура: таблицы таксономий в БД
В базе данных WordPress за таксономии отвечают, не много не мало, четыре таблицы. Разберем каждую.
wp_terms
term_id Уникальный ID термина (ID строки таблицы). name Название термина, пр: «Авторские функции». slug Ярлык (слаг) термина, пр: «avtorskie-funkcii». term_group Устарелое поле, больше не используется.
wp_term_taxonomy
К слову, на этом сайте таких сдвоенных терминов оказалось всего 12 из нескольких сотен существующих, что еще раз доказывает несостоятельность прежней логики такс (было столько разветвлений в коде и всяких JOIN в sql запросах, только для того, чтобы не писать 12 строк в таблицу БД).
wp_term_relationships
Эта таблица содержит всего три поля:
Содержит порядок в котором были указаны термины, при прикреплении их к записи. Например, при редактировании записи мы указали ей 2 рубрики и 3 метки, вот в каком порядке мы их видим (они передались в POST запросе), такие значения сюда будут записаны: 1, 2 для рубрик, и 1, 2, 3 для меток.
wp_termmeta
В wp_termmeta принято сохранять любые дополнительные данные термина, например это могут быть СЕО поля: заголовок, описание и что угодно еще.
По умолчанию, эта таблицы не задействована и всегда пуста. Она используется при расширении базовых возможностей WP, как правило плагинами.
До версии 4.4 у терминов не было метаполей и их записывали в опции, жуткое было время. Для тех времен я делал так.
Связь всех таблиц
Для создания своих SQL запросов, когда базовые функции не справляются или справляются не так как хотелось бы, нужно знать как таблицы связываются.
Давайте посмотрим SQL запрос, который свяжет все таблицы с помощью JOIN. Запрос ниже вернет все записи типа post и данные к какому термину прикреплена каждая запись:
Создавая подобные запросы и объединяя таблицы с помощью JOIN, вы быстро и хорошо разберетесь в зависимостях между таблицами таксономий.
Функции таксономий WordPress
Полный список смотрите по этой ссылке, а вот некоторые популярны функции:
Таксономии довольно мощный инструмент в WordPress, при этом логика таблиц сравнительно простая. Разобравшись, как работают таксономий, вы сможете создавать более сложные сайты.
Также, понимание как устроены таксономии и как записи связываются с ними, поможет вам понять где, как и какую функцию таксономий лучше использовать.
WordPress Эксклюзивное Учебное пособие по Таксономии
WordPress, одна из самых мощных систем с открытым исходным кодом для ведения блогов и управления контентом, используется для обеспечения большей части сетей. До четверти всех веб-сайтов используют WordPress.
В отличие от многих других CMS, WordPress любим многими за гибкость и настраиваемость. Таксономии, одна из основных функций WordPress, позволяет организовать контент так, как вам нужно. Несмотря на то, что WordPress поставляется с несколькими стандартными таксономиями, вы можете добавлять столько пользовательских таксономий, сколько пожелаете.
Однако для того, чтобы таксономии вели себя так, как вы этого хотите, может потребоваться использовать недокументированные подходы.
В этой статье вы узнаете, как вы можете определять эксклюзивные пользовательские таксономии в WordPress, которые ведут себя намного больше как категории, чем теги, что позволяет вам классифицировать ваши посты гораздо более строго, чем вы можете из коробки.
Что такое таксономия?
Согласно кодексу WordPress:
Таксономия – это способ сгруппировать вещи.
Например, связка фруктов разных типов может быть сгруппирована по различным характеристикам, а затем этим группам могут быть назначены имена.
В WordPress таксономии используются для группировки сообщений, страниц и даже пользовательских типов сообщений в разных группах.
Названия для разных группировок в таксономии называются терминами. Взять, к примеру, фрукты и как их можно сгруппировать по цветам. В этом случае названия разных цветов будут термины.
По умолчанию WordPress поставляется с четырьмя таксономиями: категория, тег, категория ссылки и формат публикации. Вы можете узнать больше об этих таксономиях по умолчанию здесь.
Среди этих встроенных таксономий категории и теги очень похожи, но имеют одно важное отличие: категории являются эксклюзивными таксономиями (т. Е. Для каждой публикации вы можете выбрать не более одной категории), тогда как каждой публикации может быть назначено несколько тегов.
Более того, категории обычно предопределены, а теги могут быть определены по мере необходимости.
Определение пользовательских таксономий
Вы можете определить пользовательскую таксономию, используя register_taxonomy() функцию. Вы можете узнать больше о функции здесь.
Чтобы увидеть, как работает эта функция, давайте определим собственную таксономию для постов с фотографиями пейзажей.
В приведенном выше фрагменте мы определяем новую таксономию для сообщений, называемых
Вы можете подумать об этой таксономии, используемой для категоризации фотографий в зависимости от вида или характера представлений, представленных на фотографиях (например, горы, озеро или лес).
Строка возможностей в приведенном выше фрагменте не является обязательной. Без этого WordPress будет использовать возможности по умолчанию для тех же пользователей, что и сообщения. Как показано выше, это позволит любому пользователю с настраиваемой возможностью «edit_guides» назначать таксономию сообщению, а любому пользователю с настраиваемой возможностью «publish_guides» создавать новые элементы таксономии.
Согласно официальной документации, можно определить четыре возможности:
Как используются таксономии
Со стороны пользовательского интерфейса WordPress создает новый мета-блок для сообщений для каждой таксономии. Мета-блок аналогичен мета-блоку Теги, который позволяет вам связать одно или несколько условий с вашим постом. Это то, что WordPress делает по умолчанию, и это то, что мы можем изменить, сделав таксономию эксклюзивной: заставьте пользовательскую таксономию вести себя как таксономия категории.
Принудительная эксклюзивность в таксономиях
Когда мы создаем пользовательскую таксономию с помощью register_taxonomy() метода, WordPress добавляет мета-блок с выбором нескольких элементов на страницу редактирования поста:
Используя этот мета-блок, пользователь может выбрать любое количество существующих (уже использованных) терминов, а также может добавить новые термины с помощью текстового поля.
Чтобы создать подобную категории таксономию, где каждая публикация принадлежит не более чем одной категории из набора предопределенных категорий, вы можете сделать это, немного настроив WordPress:
Давайте посмотрим на каждый из шагов.
Скрыть мета-бокс по умолчанию, созданный WordPress
Первый параметр скрывает таксономию на панели быстрого / массового редактирования, а второй параметр скрывает ее на странице редактирования сообщения:
Если мета-поле по умолчанию скрыто, элементы могут быть добавлены в набор доступных терминов таксономии через страницу управления таксономией:
Создайте пользовательский мета-бокс на странице редактирования
Мы вызываем add_meta_box метод со следующими аргументами:
Обратите внимание, как мы указали taxonomy_box в качестве идентификатора. Тем не менее, именно функция в третьем параметре позволит нам определить, что будет в поле.
Теперь мы реализуем fill_custom_meta_box_content функцию:
Здесь мы сначала извлекаем все термины (т. Е. Существующие значения) таксономии. Мы будем использовать их для отображения списка элементов управления переключателями.
Далее мы извлекаем текущий выбранный термин таксономии, используя get_the_terms() функцию – нам нужно, чтобы был выбран соответствующий переключатель.
Обратите внимание, что эта функция возвращает массив. Это связано с тем, что по умолчанию сообщение может иметь любое количество терминов, связанных с ним. По нашему предположению, запись имеет не более одного термина, поэтому мы получаем доступ к первому элементу массива. (Это нормально, если массив пуст; мы получим null в качестве текущего значения и не будет выбран ни один переключатель).
В исходном HTML-коде используются custom_taxonomy радиокнопки и соответствующие термины в качестве значений; атрибуты идентификатора переключателя просто используются для подключения к тегам меток. В результате мы получаем следующий пользовательский мета-блок:
Сохранить значение таксономии при сохранении сообщения
Наконец, нам нужно сохранить значение таксономии при сохранении сообщения. Для этого мы можем использовать save_post крючок:
И это все! Мы сделали.
Теперь вы знаете, как определить пользовательскую таксономию, которая будет вести себя как встроенная таксономия категории.
Примечание: WordPress принял запрос на добавление функции, чтобы упростить переключение эксклюзивности для пользовательских таксономий. Тем не менее, билет не видел много активности в течение некоторого времени.
Заворачивать
Таксономии – очень мощная и полезная функция в WordPress. Изначально им не хватает возможности выполнять строгую категоризацию сообщений, но, как и почти все в WordPress, таксономии и связанные с ними функции чрезвычайно настраиваемы. Это позволяет нам добавить эту часто необходимую способность в несколько шагов.
Представленный здесь подход также можно использовать для создания еще более настраиваемого пользовательского интерфейса на страницах редактирования сообщений для выбора термина таксономии.
Я надеюсь, что вы нашли этот краткий учебник по определению эксклюзивных пользовательских таксономий полезным!
Как добавить произвольную таксономию в WordPress? Код для вывода записей и терминов таксономии.
Таксономии дают возможность веб разработчикам создавать более сложные и структурированные проекты на WordPress. По своему принципу таксономия напоминает каталог, в котором по группам расположены определенные виды записей.
Стоит отметить, что таксономия – это как общий элемент структуризации данных, при работе с постами вы будете работать с элементами таксономии, которые называют «terms» («термины»). Давайте наглядно разберем пример. В админке WordPress, есть раздел «Рубрики» — это и есть таксономия, а созданные в нем элементы, например «Квартиры» — это термины, непосредственно к которым вы и привязываете ваши записи, а в последующем выводите их на сайте.
Все таксономии разделяют на два типа: древовидные и линейные.
Древовидные это те, которые позволяют создавать дочерние подрубрики к основной рубрике. В итоге, такая структура может иметь вид: «Квартиры» — «Однокомнатные». Пример древовидных таксономий – это рубрики постов.
Линейные – это независимые друг от друга термины. Ярким примером линейных таксономий в WordPress являются метки.
Таксономии WordPress «из коробки»
По дефолту в данной CMS есть четыре типа таксономий.
Как добавить свою таксономию в WordPress?
Для создания кастомных таксономий в WordPress используют функцию — register_taxonomy(). Если вы не хотите разбираться с ее опциями, то можете использовать плагин, например – «Custom Post Type UI». Но, если вы планируете разрабатывать сайты на этом движке, я рекомендую вам разобраться с работой таксономий, так как в любом случае вы будете использовать их на практике при разработке коммерческих проектов.
Для того чтобы добавить свою таксономию, вам нужно будет внести код в файл function.php вашей темы используемой на сайте. Перед тем, как вносить изменения сделайте бэкап самого файла, или же бэкап сайта! Код добавляют внизу файла function.php, или же создают файл php формата в папке inc, после чего подключают его в файле function.php.
Вот пример кода, который добавит таксономию «Квартиры» на ваш сайт.
Первый блок опций – это текстовые переводы пунктов меню и заголовков. Все что ниже – это настройка дополнительных параметров. Ниже описание основных настроек.
Важный момент! Имя таксономии должно быть уникальным и не совпадать с названием зарезервированных WordPress таксономий, а также публичных и частных переменных.
Итак, для того, чтобы вам добавить свою таксономию вам нужно переименовать «flat», на название вашей таксономии, а также внести правки по тестовым переводам в админке.
Для каких задач используются кастомные таксономии?
Основная цель применения кастомных таксономий в WordPress – это структуризация и удобная работа с большим объемом данных. Давайте представим ситуацию, что у вас свое агентство по сдаче жилья в аренду. Каждую запись о квартире вам нужно привязывать к различным параметрам поиска, который будет осуществлять пользователь на вашем сайте. Это могут быть следующие опции: количество комнат, район, ценовой сегмент и другие.
И тут у вас есть два пути для сегментации.
Вот как выглядит вид выбора таксономии при редактировании записи.
Пример запроса по поиску недорогой однокомнатной квартиры возле центра города.
Если у вас под квартиры создан отдельный тип записи, например «flat», то в коде выше меняем значение параметра ‘post_type’, вместо ‘post’ указываем ‘flat’.
Как задать шаблон для таксономии в WordPress?
Иногда стоит задача интегрировать другой дизайн для страницы таксономии, например, сделать вывод в виде сетки, или же вывести дополнительные произвольные поля для записей таксономии, например количество комнат или же локацию для квартиры.
WordPress отбирает шаблон для страницы по определенной иерархии. Вы можете задать отдельный шаблон под каждую таксономию, или же один шаблон для всех таксономий.
Вот те виды шаблонов таксономий, которые вы можете использовать при разработке сайтов.
Для примера в моем случае можно создать шаблон taxonomy-flat.php в таком случае шаблон будет работать для всех терминов таксономии «flat».
Шаблон загружаете в основную папку вашей темы, он будет использовать автоматически, при условии, что вы все правильно сделали.
В данном примере кода используется функция get_term_by(), она включает в себя все данные связанные с таксономией.
Использование условных операторов для вывода записей привязанных к определенным таксономиям
Условные операторы часто используются для вывода контента на страницах с определенными параметрами. Давайте рассмотрим подробнее, как выполняются условия.
Теперь давайте рассмотрим несколько примеров по использованию функций для вывода таксономий и связанных с ними постов на сайте.
Как вывести список терминов таксономии в WordPress?
Для этих целей используется функция — wp_list_categories(), которая имеет много опций для настройки вывода терминов.
Как вывести посты для выбранной таксономии в WordPress?
Для того чтобы выводить записи из отдельных таксономий используется классы: WP_Query или же tax_query, которые за счет параметров позволяют очень гибко выводить необходимые посты на сайте.
На примере выше мы получим последние 10 записей, которые принадлежат таксономии «flat», c термином «cheap».
Также для этой задачи можно использовать функции: get_terms() и get_term_by().
Как вывести заголовок текущей таксономии?
Для этого используется функция — single_term_title().
Как получить id таксономии?
В WordPress для этого существует специальная функция, которая называется: get_term_by().
Она принимает следующие параметры:
Выводы. В этой статье представлены основы работы с таксономиями в WordPress. Есть много нюансов, но я привел лишь часто используемые на практике куски кода. Рекомендую разобраться с этим функционалом движка и в будущем использовать его на своих проектах.