register_taxonomy() — создание таксономии. Taxonomy wordpress
Таксономии в WordPress
Буквально на днях я обнаружил, что у меня на блоге есть множество статей, так или иначе связанных с таксономиями, а также описания различных функций для работы с ними, но такого главного, обобщающего поста просто нет.
Начну с того, что таксономии нужны для группировки постов.
Каким образом? Ну возьмём к примеру хэштеги в инстаграм — когда вы постите фото и присваиваете ему теги — это как раз и есть та самая группировка, о которой я говорю. По умолчанию WordPress тоже поддерживает теги для постов, а ещё рубрики. И их можно объединить одним словом — таксономии.
В WP есть стандартные таксономии, а также те, которые разработчики и пользователи создают сами.
1. Стандартные таксономии в WordPress
Рубрики и метки
Что-то мне подсказывает, что если вы читаете этот пост, то вы уже представляете, что такое рубрики (категории) и метки (теги), что у рубрик есть иерархия, у меток нет и так далее.
А теперь мне нужно донести одну важную мысль.
В WordPress есть своя группа функций для работы с рубриками и отдельная группа функций для работы с метками. Наверняка с какими-то из них вы уже знакомы.
Чуть выше мы с вами определили, что и рубрики и метки являются таксономиями, а это значит, что при работе как с теми, так и с другими вы можете спокойно использовать функции таксономий. Я например так и делаю.
Рубрики ссылок
Если рубрики и метки в WordPress были нужны для группировки записей, то данная таксономия, как понятно из названия — для группировки ссылок.
Если вы недавно установили WP, то вы не найдёте их у себя в админке. Дело в том, что с версии 3.5 ссылки по умолчанию сделали отключенными. Но не удалили — вставьте следующий код в файл functions.php вашей темы и ссылки вновь появятся у вас в админке. Вполне возможно, что вы найдете им применение.
add_filter( 'pre_option_link_manager_enabled', '__return_true' ); |
Форматы постов
Форматы на самом деле с трудом можно назвать таксономией, но фактически это так. На моём блоге им посвящён отдельный пост.
2. Пользовательские таксономии
И вот в один прекрасный день наступает момент, когда нам начинает не хватать стандартных рубрик и меток для группировки записей…
Чуть подробнее про регистрацию таксономии
Техническую сторону регистрации я подробно описал в статье про функцию 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. Подробное описание и примеры смотрите здесь.
3. Плагины для работы с таксономиями
Сам я придерживаюсь мнения, что в данном случае лучше обойтись без лишних плагинов, тем не менее вот некоторые бесплатные варианты:
- Simple Taxonomies by Yoast,
- Pods,
- Types.
Некоторые из функций для работы с таксономиями
- register_taxonomy() — создание таксономииЧто такое таксономии, как их создавать и что из этого получится? Рассмотрим на примере.
- get_terms, функция для вывода элементов таксономийФункция позволяет выводить на сайте списки рубрик, меток и элементов прочих таксономий, сортировать и фильтровать их по ряду параметров.
- wp_list_categories() — вывод категорий в виде спискаИспользование wp_list_categories для создания меню. Детальное описание настроек + примеры.
- wp_tag_cloud() — как вывести облако категорий, тегов и других таксономийВыводим облако меток, рубрик, а также элементов других таксономий на блоге без использования плагинов.
- get_term() — позволяет получить всю информацию о конкретном элементе таксономии (рубрике)Возвращает объект (или массив) со всей информацией об элементе таксономии с указанным ID.
- get_term_by() — возвращает элемент таксономии (в виде объекта или массива) по его ID, названию или ярлыкуФункция возвращает элемент таксономии (в виде объекта или массива) по его ID, названию или ярлыку.
- get_term_link() — функция для вывода ссылки на элемент таксономииКак вывести ссылку на элемент таксономии. Подробное описание функции get_term_link() с примерами.
- is_object_in_term() — проверяет принадлежность указанных элементов таксономии к указанному постуВозвращает true, если к посту с указанным ID принадлежит хотя бы один из перечисленных элементов таксономии.
- wp_set_object_terms() — привязывает указанный пост к указанным элементам таксономийФункция позволяет добавить пост в любую указанную рубрику и присвоить ему нужные метки.
- wp_count_terms() — возвращает общее количество рубрик, меток или других таксономий на блогеВозвращает целое число, являющееся общим количеством элементов заданной таксономии (рубрик или меток например).
misha.blog
register_taxonomy() - создание таксономии в WordPress
Что такое таксономия? Рубрики, метки — это и есть таксономии.
То есть получается, что заюзав упомянутую функцию, можно создать абсолютно независимые категории (или метки), с отдельным интерфейсом.
Короче говоря, когда во время разработки сайта начинает не хватать стандартных рубрик и меток — создаём таксономии.
Функция register_taxonomy()
register_taxonomy($taxonomy, $object_type, $args); |
$taxonomy(строка) Название таксономии. Не должно содержать пробелов и заглавных букв.
$object_type(массив/строка) Тип объекта (или объектов), для которых создаётся таксономия. По умолчанию в WordPress существуют следующие типы:
- post
- page
- mediapage
- attachment
- revision
- nav_menu_item
Также допускается возможность создания своего собственного объекта
$args(массив) Список параметров.
Не хочу простым текстом перечислять все параметры, лучше перейдём к примеру и там сразу же и разберёмся.
function add_new_taxonomies() { /* создаем функцию с произвольным именем и вставляем в неё register_taxonomy() */ register_taxonomy('platform', array('post'), array( 'hierarchical' => false, /* true - по типу рубрик, false - по типу меток, по умолчанию - false */ 'labels' => array( /* ярлыки, нужные при создании UI, можете не писать ничего, тогда будут использованы ярлыки по умолчанию */ 'name' => 'Игровые платформы', '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' => 'Платформы' ), 'public' => true, /* каждый может использовать таксономию, либо только администраторы, по умолчанию - true */ 'show_in_nav_menus' => true, /* добавить на страницу создания меню */ 'show_ui' => true, /* добавить интерфейс создания и редактирования */ 'show_tagcloud' => true, /* нужно ли разрешить облако тегов для этой таксономии */ 'update_count_callback' => '_update_post_term_count', /* callback-функция для обновления счетчика $object_type */ 'query_var' => true, /* разрешено ли использование query_var, также можно указать строку, которая будет использоваться в качестве него, по умолчанию - имя таксономии */ 'rewrite' => array( /* настройки URL пермалинков */ 'slug' => 'platform', // ярлык 'hierarchical' => false // разрешить вложенность ), ) ); } add_action( 'init', 'add_new_taxonomies', 0 ); |
Короче этот код нужно вставить в functions.php, а дальше получится вот что:
1. Пункт в меню для созданной таксономии:
2. При переходе по нему попадаем на страницу, схожую со страницей создание меток/рубрик. Я немного уменьшил окошко, потому что не хотел масштабировать картинку и терять качество.
3. На странице создания записи появляется блок с выбором элементов новой таксономии, в примере — игровых платформ.
Кстати, одно важно замечание, в случае, если вы использовали параметр «rewrite» для пермалинков, вам нужно перейти на страницу редактирования постоянных ссылок в настройках и просто нажать кнопку «Сохранить изменения», либо заюзать один раз flush_rules()
misha.blog
Что такое Таксономии и Термины в WordPress? » Onwp.ru
Таксономии – это то, что переносит WordPress за пределы простой блог-платформы в реальности CMS.
Но как они хранятся в базе данных?
Таксономии и Термины – мощный инструмент WordPress, который позволяет добавлять больше гибкости вашим сайтам. Они относятся к двум другим типам контента: посты и ссылки. Структура базы данных означает, что это связь один ко многим, где один пост может иметь несколько терминов по нескольким таксономиям, и один термин может быть присвоен нескольким постам или ссылкам.
Я начну давать им характеристику. Так же, как и множество вещей в WordPress, терминология может быть запутанная.
Характеристики
Таксономии
Таксономия – это система классифицированных или разложенных по категориям вещей, как правило, иерархически. Самая известная таксономия – Таксономия Линнея, используемая для классификации живых существ.
В WordPress Таксономии используются для классификации ваших данных и группировки их в множества и подмножества.
WordPress имеет три встроенные таксономии:
- Рубрика
- Метка
- Ссылка рубрики
Рубрики и метки немного похожи на посты и страницы тем, что они одного типа контента (таксономии), но по умолчанию ведут себя по-разному, а именно: рубрики — иерархичны, а метки – нет.
Таксономия ссылок рубрики работает по схожему пути с метками и теоретически может быть использована для любого типа объекта, но по умолчанию не отображается на экране редактирования поста и в окне редактирования ссылок, если ссылки активированы.
Вы также можете добавить столько дополнительных таксономий, сколько вы хотите задействовать пользовательских таксономий. Они затем будут вести себя схожим образом с рубриками и метками, и иметь в наличии термины. Каждая из ваших таксономий затем будет иметь точно такой же статус, как и любая встроенная таксономия. Это аналогично, если сравнивать статус между постами и пользовательскими типами поста.
Термины
У каждой таксономии будут термины, которые вы сможете использовать для сортировки данных. Рубрика – это всего лишь термин в таксономии рубрик, и метка – это термин в рубрике меток. После того как вы создадите таксономии, вы создадите термины для них либо с использованием консоли WordPress, либо с помощью функции wp_insert_term ().
Термины могут быть мощным инструментом в сочетании с пользовательскими запросами: вы можете создавать пользовательские файлы шаблонов в ваших темах или плагинах для отображения постов с несколькими терминами, сортировки по термину, идентификации терминов по таксономиям и многое другое.
Как WordPress хранит Таксономии и Термины
Как я уже описывал в руководстве по связям между данными, WordPress использует связь «многие-ко-многим». Эта связь создается с использованием трех таблиц:
- wp_term_relationships
- wp_term_taxonomy
- wp_terms
эти таблицы приведены ниже, наряду с таблицами показаны их связи к wp_posts и wp_links.
Давайте посмотрим на каждую из таблиц и узнаем, как они работают.
Таблица wp_terms
Таблица wp_terms хранит все индивидуальные термины для ваших рубрик, меток, ссылок рубрик и пользовательских таксономий. У нее всего лишь четыре поля:
- term_id – это уникальный ID для термина
- name (имя)
- slug (ярлык)
- term_group – это поле, которое в настоящий момент не используется WordPress, поэтому вы можете спокойно пропустить его.
Таблица wp_term_taxonomy
Таблица wp_term_taxonomy хранит больше данных о терминах, а также о таксономиях, частью которых они являются. У нее шесть полей:
- term_taxonomy_id – хранит ID, относящийся к записи в этой таблице
- term_id отображает ID термина, связанный с его записью в таблице wp_terms
- taxonomy – название таксономии, внутри которой находится термин
- description (описание)
- parent – ссылается на родительский термин для данного термина, если таксономия является иерархической, и он может быть только один.
- сount – количество постов с термином.
Во многих установках WordPress будет одна запись в таблице wp_term_taxonomy для каждого термина в таблице wp_terms, но в некоторых случаях может быть более одной записи для каждого термина. Это происходит в том случае, когда вы создаете два термина с одинаковыми именами и ярлыками в разных таксономиях. Это означает, что вы можете создать запрос для вывода постов с этим термином в нескольких таксономиях.
Это означает, что связь между этими двумя таблицами «один-ко-многим»: одна запись в таблице wp_terms может быть связана с несколькими записями в таблице wp_term_taxonomy, но каждая запись в таблице wp_term_taxonomy связана только с одной записью в wp_terms.
Таблица wp_term_relationships
Таблица wp_term_relationships является ключевой в создании связи «многие-ко-многим» между объектами и терминами. У нее всего лишь три поля:
- object_id (связан с post_id в таблице wp_post или с link_id в таблице wp_links)
- term_taxonomy_id (связан с аналогичным полем в таблице wp_term_taxonomy)
- term_order (это порядок, в котором термины были добавлены к объекту. Он используется только в том случае, если вы задали такой тип инструмента, который будет истинным, когда вы зарегистрировали таксономию – по умолчанию имеет значение «Ложь» и значение по умолчанию для этого поля 0.
Поскольку каждый объект может быть связан с несколькими записями в таблице wp_term_relationships, таким же образом может быть связан и термин, это создает связь «многие-ко-многим».
Итог
Связи между объектами (т.е. постами и ссылками) и терминами являются мощным инструментом отчасти потому, что эта единственная связь «многие-ко-многим», которая используется в WordPress.
Понимание того, как эта связь работает и где хранится ключевая информация, поможет вам понять, как работают таксономии и термины и как использовать функции, связанные с ними.
Источник: code.tutsplus.com
onwp.ru
WordPress taxonomy — что это такое и с чем ее едят » Темы и Плагины для Wordpress
Приветствую Вас, дорогие читатели, я долго думал, о чем же написать статейку, т.к. времени мало, а тем много. И вот решил рассказать Вам, что такое таксономия и произвольные типы данных в WordPress.
Статья будет интересна как новичкам, кто не знает, что это такое, так и продвинутым пользователям, т.к. я расскажу о плагинах, облегчающих работу с ними.
Начиная с WordPress версии 3.0 появилась возможность создавать произвольные типы данных, до этого были только записи, страницы и прикрепленные файлы.
О том, что же это такое, я покажу на примере:
У себя на сайте, Вы используете страницы и записи в качестве новостей, но Вам не хватает этого функционала, т.к. Вы решили сделать каталог товаров. Что же делать ?
Как это реализовать:
Вы создаете новый тип данных «товар», задаете поля для этого типа данных (название, картинка, описание и цена) и создаете таксономию «категории товара», т.е. связующее звено для Ваших новых данных (категории и теги — тоже таксономия, только доступная по умолчанию).
Что нам потребуется для создания такого функционала:
- Custom Post Type UI — плагин позволяет создавать различные типы данных и связывающую их таксономию.
- Advanced Custom Fields — позволяет привязывать дополнительные поля к различным типам данных, так же к уже готовым, таким как записи и страницы.
- Taxonomy Widget — позволяет выводить список тахономии, похож на вывод списка категорий или тегов.
Реализация задуманного:
- С помощью первого плагина мы создаем новый тип данных «товары» (Custom Post Type -> Add New -> заполняем левую форму -> Create Custom Post Type). Обратите внимание, что у левой формы есть два разворачивающихся меню с дополнительными настройками нового типа данных.
- С помощью того же плагина создаем таксономию «категории товаров» (Custom Post Type -> Add New -> заполняем правую форму -> ставим галку напротив типа данных который хотим связать -> Create Custom Taxonomy). Здесь тоже есть дополнительные настройки. Таких таксономий Вы можете создать сколь угодно много, например: категории товаров, теги товаров, производители товаров и т.п.
- С помощью второго плагина, Вы сможете задать дополнительные поля для Вашего типа данных «товары», такие как «название», «картинка», «описание» и «цена». Можно создать дополнительные поля разных типов, например: «название» — текст, «картинка» — картинка, «описание» — текстовое поле с редактором, «цена» — текст. Плагин позволяет создавать дополнительные поля 14-ти типов, есть даже такие, как выбор даты или выбор цвета.
- Все, функционал готов, теперь нам нужно вывести на сайт список «категории товаров». Для этого нам и понадобится третий плагин, который позволит вывести в виджете любую таксономию в том виде, который Вам нравится: список, выпадающее меню и облако (как облако тегов).
Более подробно, расскажу по запросу.
«Плагины для удобства работы с таксономией» — продолжение этой темы, рекомендуется к прочтению.
В ближайшее время планирую написать статью, о том, как создавать шаблон для таксономий и типов данных, а так же, как выводить в нем наши дополнительные поля.
wp-skins.info