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

Содержание материала:

WordPress таксономии вывод эха

Я создаю сайт, на котором будут представлены продавцы, вроде сайта, посвященного сделке дня, на странице продукта будет что-то вроде этого:

«Продавец: (Выведите пользовательскую таксономию для компании здесь)« У каждого продукта будет свой бренд или название компании, но я просто пытаюсь вывести эту таксономию. В настоящее время я делаю это с «тегами» в WordPress так:

Это работает для тегов: —->

Затем я попытался: получить таксономию, а не теги, и она не работает.

Решение

Примечание: я уверен, что $product в вашем контексте, так что если вы используете get_posts() Вы можете изменить get_the_id() в коде выше, чтобы $product->ID

Другие решения

Итак, я закончил с этим

И это ничего не дает. Внутри брендов у меня есть три термина или марки. Бренд1, Бренд2 и Бренд3. Все еще ничего не возвращаю.

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

Здравствуйте уважаемые читатели блога WP Developer. В прошлой статье я рассказывал о таксономиях: что это такое, привел пример стандартных таксономий в WordPress и описал как добавить таксономию к записям. Сегодня я хотел бы поговорить о том, как создавать таксономии для произвольных типов записей. Алгоритм создания таксономий для стандартных и произвольных типов записей схож, за исключением небольших нюансов. Но, в общем, об этом ниже.

Шаг 1. Создание произвольного типа записей

Первым делом необходимо создать новый произвольный тип записей. В нашем примере назовем его Магазин . Для этого в файл functions.php Вашей темы необходимо добавить следующий код.

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

Если Вы хотите, чтобы созданный тип записей отображался в навигационном меню, то не забудьте элементу show_in_nav_menus присвоить значение true .

Шаг 2. Создания таксономии

На этом шаге мы должны создать новую таксономию и связать ее с только что созданным новым типом записей — Магазин . Для этого в файл functions.php добавьте следующий код.

На строке 34 текущего кода мы указали название для новой таксономии, а на строке 35 связали ее с новым типом записей — shop . Теперь меню с разделом Магазин в админ-панели выглядит так, как показано на рисунке ниже.

Как видно из рисунка, появился новый подпункт под названием Товары . Это как раз и есть добавленная нами таксономия. Вид добавления поста для нового типа записей выглядит так:

Справа появился новый блок Товары , в который я добавил рубрику Часы . А вот так выглядит навигационное меню, когда в него добавлены наш произвольный тип записей и новая таксономия:

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

Шаблон вывода для произвольной таксономии

Настройки ЧПУ (постоянных ссылок)

Здесь изначально я советую пройти в ЧПУ (Настройки->Постоянные ссылки) . Желательно, чтобы настройки были примерно такими /%category%/%postname%.html или /%postname%/ . На рисунке ниже показано, как сделано у меня.

Создание шаблона для произвольной таксономии

Теперь, когда мы настроили постоянные ссылки, пришла пора создания шаблона для нашей таксономии. Лично я использую 3 способа создания таких шаблонов, а точнее 3 способа их названия. Ниже они описаны согласно приоритету поиска CMS WordPress:

  • taxonomy-.php — значения в скобках расшифровываются так taxonomy-<название-таксономии>—<название-термина-таксономии>.php . Например, можно назвать шаблон taxonomy-goods-clock.php и он будет выводить статьи из таксономии goods , термином которой является clock (часы) ;
  • taxonomy-.php — taxonomy-<название-таксономии>.php . Например, taxonomy-shop.php ;
  • taxonomy.php — использую реже всего, если знаю, что заведомо на сайте будет только одна таксономия.

Остается добавить в файл код вывода и все будет работать.

Шаблон вывода для произвольных типов записей

В своей практике я использую 2 вида названия шаблонов для вывода поста из произвольных типов записей:

Как вывести все посты кастомной таксономии?

Есть кастомная таксономия — «taxonomy» она создана и используется только для кастомного типа поста «home». В ней есть такие таксономии(см. скриншот). Как на странице таксономии Homes вывести все посты которые есть в ней?

1 ответ 1

Можно попробовать реализовать следующим образом. Находим в шаблоне

Перед этой строкой вставляем

Можно сказать, это некий костыль,но в тот момент когда я его писал, он меня устраивал. Подробнее https://wp-kama.ru/function/query_posts#parametry-taksonomij

Есть возможность выводить записи по типу поста, в таком случае

В принципе весь вывод постов осуществляеться посредством query_posts(), в которую можно передать массу параметров — тип постов, таксономия, сортировка, метки и пр. Подробнее читайте в документации.

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

Здравствуйте! Пытаюсь реализовать вывод постов из рубрики пользовательской таксономии.
Использую query_posts и столкнулся с проблемой в получении постов только из определенной рубрики. Так как в таксономии custom_category созданы рубрики мне нужно выводить посты только из одной рубрики (у рубрики id 92, slug — blablabla).

Далее стандартный цикл

Пробовал использовать ‘cat’ => 92 или ‘category_name’ => ‘blablabla’ — без результатов.
Также пробовал сделать через wp_query, тоже самое..

SEO Маяк

Блог Виталия Кириллова | Все о создании,
продвижении сайтов и заработке в интернете

Создание и продвижение сайтов, заработок в интернете

register_taxonomy() — произвольные таксономии WordPress

Всем привет! Сегодня на seo-mayak.com мы продолжим развивать функционал WordPress и на повестке тема — произвольные таксономии. Их еще не редко называют «пользовательскими таксономиями».

Мы подробно разберем работу функции register_taxonomy() , познакомимся с ее параметрами, пройдемся по аргументам и создадим две полноценных таксономии: древовидную (по типу стандартных рубрик) и не древовидную (по типу меток), конечно, с полным интерфейсом в админке.

Функционал произвольных записей и таксономий был внедрен разработчиками довольно давно, еще с версии 2.3, которая вышла аж в 2007 году. Именно тогда WordPress из чисто блогового движка превратился в многофункциональныю CMS, способную решать самые разные задачи.

Итак, что такое произвольные таксономии? Ну тут все просто.

Произвольные таксономии — это зарегистрированные в системе категории или метки, которые никак и ничем не связаны со стандартными рубриками или метками WordPress.

У любой таксономии есть свой уникальный идентификатор (имя). Например, у стандартных категорий — это «category». Кстати, вы никогда не задумывались откуда в урлах стандартных рубрик взялось слово «/category/»?

А взялось оно как раз из названия таксономии.

Также в произвольной структуре рубрик предусмотрен свой собственный цикл, который будет обрабатывает только тот тип записей, который указан в настройках функции, ну об этом чуть позже.

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

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

Пример подключения произвольного типа записи

Функция вставляется в файл functions.php. После чего в админке должен появиться блок с интерфейсом для созданного типа записи:

Как вы наверное догадались, данному типу записи я присвоил имя «kodex» (см. строчку №34). Запомним, потом оно нам еще пригодится, а сейчас давайте поближе познакомимся с функцией register_taxonomy() .

Функция register_taxonomy()

Функция register_taxonomy() работает на основе класса WP_Taxonomy<>

Выглядит функция следующим образом:

register_taxonomy( $taxonomy, $object_type, $args );

Где:
$taxonomy (строка) (обязательно) — Имя регистрируемой таксономии (не допускаются пробелы и заглавные буквы).
$object_type (массив/строка) (обязательно) — Имя объекта (типа записи), для которой будет регистрироваться таксономия.
$args (массив) (необязательно) — Массив аргументов, которые может принимать функция.

Последний параметр является необязательным и если его упустить, то функция выведет стандартный интерфейс меток:

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

attachment feed pb static
attachment_id fields perm subpost
author hour post subpost_id
author_name link_category post__in tag
calendar m post__not_in tag__and
cat minute post_format tag__in
category monthnum post_mime_type tag__not_in
category__and more post_status tag_id
category__in name post_tag tag_slug__and
category__not_in nav_menu post_type tag_slug__in
category_name nonce posts taxonomy
comments_per_page nopaging posts_per_archive_page tb
comments_popup offset posts_per_page term
customize_messenger_channel order preview theme
customized orderby robots type
cpage p s w
day page search withcomments
debug page_id second withoutcomments
error paged sentence year
exact pagename showposts

Шаблон функции со всеми аргументами

Это шаблон! Не надо его никуда вставлять!

Хочу обратить ваше внимание на строчку №47 — здесь мы регистрируем новую таксономию и вторым параметром array(‘kodex’) обязательно указываем название произвольного типа записи.

Теперь аргументы и первым делом давайте разберем массив $labels.

Массив $labels

$labels = array(‘ключ’ => ‘значение’) — в массиве $labels все значения должны содержать текст, который будет отображаться в админке. Это могут быть тексты кнопок, заголовки или уведомления.

‘name’ => ‘Категории’ — Заголовок для страницы редактирования произвольной категории.

По умолчанию: ничего не выводится.

На заметку! Если значение аргумента name окажется пустым, то на странице редактирования записи интерфейс рубрик выведен не будет.

‘singular_name’ => ‘Категория’ — Название для одного элемента.

По умолчанию: _x( ‘Post Tag’, ‘taxonomy singular name’ ) или _x( ‘Category’, ‘taxonomy singular name’ ).

‘menu_name’ => ‘Категории’ — Заголовок в меню админки.

По умолчанию: По умолчанию: значение аргумента name.

‘all_items’ => ‘Все категории’ — Заголовок для всего списка категорий.

По умолчанию: ‘Все рубрики’ или ‘Все метки’.

‘edit_item’ => ‘Редактировать категорию’ — Заголовок для страницы редактирования произвольной таксономии.

По умолчанию: ‘Изменить рубрику’ или ‘Изменить метку’ .

‘view_item’ => ‘Посмотреть категорию’ — отображается на странице редактирования в админ баре (тулбаре).

По умолчанию: ‘Посмотреть рубрику’ или ‘Посмотреть метку’.

‘update_item’ => ‘Сохранить категорию’ — используется при сохранении изменений через опцию «Свойство».

По умолчанию: ‘Обновить рубрику’ или ‘Обновить метку’.

‘add_new_item’ => ‘Добавить новую категорию’ — Текст кнопок и заголовков.

По умолчанию: ‘Добавить новую рубрику’ или ‘Добавить новую метку’.

‘new_item_name’ => ‘Новая категория’ — Текст для нового элемента таксономии.

По умолчанию: __( ‘Add New Tag’ ) или __( ‘Add New Category’ ).

‘parent_item’ => ‘Родительская категория’ — Текст для опции выбора родительской категории (только для древовидных таксономий) .

По умолчанию: ‘Родительская рубрика’.

‘parent_item_colon’ => ‘Родительская категория:’ — То же, что parent_item, только с двоеточием на конце.

По умолчанию: null или ‘Родительская рубрика:’.

‘search_items’ => ‘Поиск по категориям’ — текст для кнопки поиска.

По умолчанию: ‘Поиск рубрик’ или ‘Поиск меток’.

‘popular_items’ => ‘Популярные метки’ — Текст для популярных меток (только для не иерархических таксономий) .

По умолчанию: ‘Популярные метки’ или null.

‘separate_items_with_commas’ => ‘Список Меток (разделяются запятыми)’ — Текст, который отображается под формой ввода новых меток на странице редактирования записи (только для не иерархических таксономий) .

По умолчанию: ‘Метки разделяются запятыми’.

‘add_or_remove_items’ => ‘Добавить или удалить метку’ — Данный текст используется при отключенном javascript (только для не иерархических таксономий) .

По умолчанию: ‘Добавить или удалить метку’.

‘choose_from_most_used’ => ‘Выбрать метку’ — Текст для выбора метки (только для не иерархических таксономий) .

По умолчанию: ‘Выбрать из часто используемых меток’.

‘not_found’ => ‘Метки не заданы’ — данный текст отображается, если не создано ни одной метки (только для не иерархических таксономий) .

По умолчанию: ‘Метки не найдены’.

‘back_to_items’ => ‘Назад на страницу меток’ — данный текст отображается если обновить изменения на странице редактирования категорий или меток.

По умолчанию: ‘Назад к меткам’.

На заметку! Массив $labels также можно дополнить аргументами из функции get_taxonomy_labels().

Массив $args

‘label’ => ‘Категории’ (строка) — Текст для отображения в админке во множественном числе (необязательно) .

По умолчанию: значение $labels->name.

‘public’ => ‘true’ (логическое) — Возможные значения: true / false . Выводить/Не выводить интерфейс таксономии в админке. Значение автоматически передается аргументам publicly_queryable , show_ui и show_in_nav_menus (необязательно) .

По умолчанию: true.

‘publicly_queryable’ => ‘true’ (логическое) — Определяет отображать/не отображать элементы таксономии на внешней стороне сайта (необязательно) .

По умолчанию: значение аргумента ‘public’.

‘show_ui’ => ‘true’ (логическое) — Отображать/Не отображать интерфейс таксономии в админке (необязательно) .

Значение данного аргумента, в отличии от public , не распространяет свое действие на аргументы: publicly_queryable и show_in_nav_menus , тем самым предоставляя возможность более тонкой настройки.

Если при значении false попробовать перейти на страницу редактирования таксономии, wordpress выведет сообщение:

По умолчанию: значение аргумента ‘public’.

‘show_in_menu’ => ‘true’ (логическое) — Отображать/Не отображать название таксономии в меню админки (необязательно) .

При значении false редактирование таксономии не запрещается.

По умолчанию: значение аргумента ‘show_ui’.

‘show_in_nav_menus’ => ‘true’ (логическое) — Отображать/Не отображать название таксономии в интерфейсе создания произвольного меню (необязательно) .

По умолчанию: значение аргумента ‘public’.

‘show_in_rest’ => ‘false,’ (логическое) — Включать/Не включать таксономию в REST API (необязательно) .

По умолчанию: false.

‘rest_base’ => ‘url_rest’ (строка) — Ярлык в REST API (необязательно) .

По умолчанию: $taxonomy.

‘rest_controller_class’ => ‘WP_REST_Terms_Controller’ (строка) — Имя класса контроллера в REST API (необязательно) .

По умолчанию: ‘WP_REST_Terms_Controller’.

‘show_tagcloud’ => ‘true’ (логическое) — Разрешить/Запретить создавать облако меток для данной таксономии (необязательно) .

По умолчанию: значение аргумента ‘show_ui’.

‘show_in_quick_edit’ => ‘true’ (логическое) — Разрешить/Запретить отображать таксономию в опции «Свойства» на странице всех записей (необязательно) .

По умолчанию: значение аргумента ‘show_ui’.

‘meta_box_cb’ => ‘post_categories_meta_box’ (callback) — Название callback функции, которая будет будет отвечать за отображение блока (метабокса) категорий на странице редактирования записи (необязательно) .

На заметку! callback — это передача сценария (исполняемого кода) в качестве аргумента.

В wordpress на этот случай предусмотрены две callback функции:

post_categories_meta_box — отображать как категории.
post_tags_meta_box — отображать как метки.

Например: если выбрать функцию post_tags_meta_box , то на странице редактирования записи интерфейс категорий будет выглядеть следующим образом:

Можно указать свою функцию, если таковая имеется и изменить интерфейс блока до неузнаваемости, а можно задать false и метабокс не будет выведен вовсе.

По умолчанию: null (в зависимости от значения параметра ‘hierarchical’ задействуется одна из вышепредставленных функций).

‘show_admin_column’ => ‘true’ (логическое) — Возможные значения: true / false . Отображать/Не отображать колонку «Категории» на странице «Все записи» (необязательно) .

По умолчанию: значение аргумента false.

‘description’ => » (строка) — Описание таксономии. (необязательно) .

По умолчанию: ‘ ‘ (пустая строка).

‘hierarchical’ => ‘true’ (логическое) — Задает тип таксономии (необязательно) .

true — Создать древовидную таксономию.
false — Создать не древовидную таксономию.

По умолчанию: false.

‘update_count_callback’ => » (строка) — Название callback функции, которая будет срабатывать при изменении количества прикрепленных записей. (необязательно) .

_update_post_term_count — счетчик количества опубликованных записей закрепленных за данной таксономией.
_update_generic_term_count — для связанных типов записей (по умолчанию установлена для таксономии «link_category»).

По умолчанию: ‘ ‘ (пустая строка) — автоматически срабатывает функция _update_post_term_count() .

‘query_var’ => $taxonomy (логическое/строка) — Строка — ключ запроса query_var (необязательно) . Шаблон URL запроса:

Можно задать свой ключ.

При значении false отключаются, как сам запрос, так и все его параметры.

По умолчанию: название таксономии ($taxonomy).

‘rewrite’ => true (логическое/массив) — Определяет включить или отключить перезапись постоянных ссылок. Также можно задать массив аргументов. (необязательно) .

Возможные аргументы массива:

slug — Можно задать свой ярлык для таксономии.

Например: ‘rewrite’ => array( ‘slug’ => ‘new_category’ )

По умолчанию: название таксономии ($taxonomy);

Важно! Ярлык не должен совпадать с именем типа записи.

with_front — можно задать префикс для постоянной ссылки.

По умолчанию true.

hierarchical — При значении true включиться поддержка древовидных URL, т.е, структура урла будет такая:

домен / ярлык_таксономии /категория / подкатегория

А при значении false такая:

домен / ярлык_таксономии / подкатегория

По умолчанию false;

На заметку! Массив передается в функцию add_permastruct() , поэтому дополнительно тут можно использовать аргументы из этой функции.

По умолчанию: true (включить перезапись).

‘sort’ => null (логическое) — Запоминать/Не запоминать порядок создания термов (необязательно) . Шаблон URL запроса:

Например, при значении true , для не иерархической таксономии, в таблицу wp_term_relationships прописывается порядок добавления меток к записи:

Как показали эксперименты, аргумент sort, в принципе, ни на что не влияет.

По умолчанию: null (сортировка отключена).

‘_builtin’ => false (логическое) — Возможные значения: true / false (необязательно) .

true — таксономия будет восприниматься системой как внутренняя (родная).
false — будет восприниматься как встроенная (произвольная).

По умолчанию: false.

Важно! Разработчики не рекомендуют использовать данный аргумент при регистрации произвольной таксономии!

Функция возвращает: ничего или WP_Error.

Хук register_taxonomy

В функции register_taxonomy() предусмотрен одноименный хук — register_taxonomy , с помощью которого можно изменять значения аргументов как у произвольных таксономий, так и у стандартных.

Поменяем заголовок в меню админки для стандартной таксономии «category». Вместо Рубрики выведем Разделы :

Все просто. Теперь перейдем непосредственно к регистрации произвольных таксономий.

Регистрация таксономии

На примере я покажу, как зарегистрировать сразу две таксономии: древовидную (категории) и не древовидную (метки).

Из функции убрано все лишнее, хотя, конечно, ситуации бывают разные.

Также можно подключить к одной таксономии несколько типов записей:

Если все сделано правильно, то в админке должен появиться интерфейс вновь созданных таксономий:

Нам осталось вывести наши таксономии на сайте. Давайте разберемся, как можно это сделать.

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

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

1. С помощью функции wp_list_categories():

2. С помощью функции get_terms():

3. С помощью функции get_categories():

4. Выведем облако произвольных меток с помощью функции wp_tag_cloud :

Вставлять в файл sitebar.php или в виджет.

Вывод категорий в зависимости от таксономии и типа записи

Бывает, что тематика сайта подразумевает наличие множества произвольных разделов и не очень удобно, когда в сайдбаре вытягивается длинная «простыня» из рубрик и подрубрик.
Поэтому нередко требуется функционал, который позволял бы выводить категории только в том разделе, к которому они относятся.

Пример: Выведем две произвольные таксономии только на тех страницах, к которым они относятся.

Функция вставляется в файл functions.php. Понятно, что в функцию надо вписать свои имена таксономий и типов записей.

Вызвать функцию можно в файле sitebar.php или через виджеты, если, конечно, они у Вас поддерживают выполнение php кода.

Таблица изменений

Версия Дата Описание
2.3.0 24.09.2007 Внедрение
3.5.0 11.12.2012 Изменена логика аргумента show_ui. Теперь при значении false отключается вывод интерфейса таксономий в админке.
4.2.0 23.04.2015 Введен аргумент show_in_quick_edit.
4.4.0 08.12.2015 Изменено действие аргументов: public (теперь он также контролирует отображение таксономии на лицевой стороне сайта) и show_ui (теперь он применяется на странице редактирования терма).
4.5.0 12.04.2020 Введен аргумент publicly_queryable
4.7.0 06.12.2020 Введены аргументы: show_in_rest, rest_base, rest_controller_class.

Файл: wp-includes/taxonomy.php (Развернуть)

С уважением, Виталий Кириллов

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

Таксономии в WordPress — это различные способы классификации записей. Примером стандартных таксономий служат метки и категории, причем метки являются таксономией с одноуровневой иерархией, а категории — таксономией с многоуровневой иерархией, в которой есть родительский уровень и подчиненный. Так же к таксономиям относятся уровни навигационного меню и ссылки. Начиная с WordPress 2.8 можно создавать пользовательские таксономии, и тем самым расширить методы упорядочивания записей до любого уровня. Давайте посмотрим, как создать простую пользовательскую таксономию.

За создание новой пользовательской таксономии отвечает функция register_taxonomy() — с ее помощью можно зарегистрировать таксономию и описать ее параметры. Для примера создадим таксономию Страны, востребованную на сайте туристической компании. Для этого нужно добавить в файл functions.php:

country — это внутреннее название таксономии.
post — тип записи, который будет использовать таксономию. Вы можете изменить его на page или другой пользовательский тип записи (о создании пользовательских типов записей я напишу отдельно).
hierarchical — ключ, определяющий, будет ли таксономия иметь иерархию.

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

Так же пользовательская таксономия Страны появится в редакторе постов — при создании поста с ней можно работать так же, как и со стандартными таксономиями.

Если вы хотите создать не одну, а две новых таксономии, то нужно использовать две функции с разными названиями. Для примера давайте добавим еще одну таксономию Способы оплаты. Для этого в файл functions.php нужно вставить:

В итоге появится еще одна дополнительная таксономия.

Эту таксономию можно использовать в сочетании с другими.

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

Показываем похожие записи с помощью таксономии и пользовательского типа содержимого в WordPress

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Иногда вы хотите, чтобы на вашем WordPress сайте, под записью в блоге отображалось больше страниц, нежели просто блог.

У вас уже есть возможность использовать категории, архивы таксономии и метки. Этого достаточно, чтобы разделить ваше содержимое и добавить различные разделы в ваш блог или новостной сайт.

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

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

Что вам понадобится

Чтобы следовать вместе со мной, вам понадобится:

  • Установленный WordPress для разработок, не следует делать это на рабочем сайте, пока это не будет работать.
  • Редактор кода.
  • Тема, которую вы можете редактировать или тема с хуком действий (action) внизу содержимого. Если вы используете стороннюю тему без хуков, вам понадобиться создать дочернюю тему и редактировать её.

Настройка плагина

Начнём с создания нового плагина и добавления к нему «шапки» с информацией:

Если вам это не знакомо, посмотрите наш курс по созданию плагина. И не стесняйтесь изменять текст в «шапке» выше, подставьте ваше имя, URI и прочее.

Регистрация типа содержимого

Если вы работаете с типом содержимого, не зарегистрированного другим плагином на вашем сайте, тогда вам нужно его зарегистрировать.

Мы сделаем это создав функцию и подцепив её к хуку init . Добавьте это в ваш плагин:

Это регистрирует плагин tutsplus_product . Если хотите иное название для типа содержимого, тогда измените его в коде выше.

Теперь, когда вы посетите админку WordPress, вы увидите в меню ваш тип содержимого:

Регистрация таксономии

Следующий шаг – регистрация таксономии. Снова создаём функцию в нашем плагине:

Моя таксономия называется tutsplus_product_tax . Я специально добавила tax , чтобы знать, что это таксономия, а не тип содержимого. А ещё я сделала специальный пункт меню так, чтобы кто бы ни использовал этот плагин через админку WordPress, они будет знать когда они работают с типом содержимого, а когда с таксономией.

Вот оно в админке WordPress:

На снимке вы можете увидеть, что я добавила несколько примеров продуктов.

Создание запроса

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

Чтобы это сделать, используем функцию get_the_terms() . Затем, мы создадим пустой массив переменных и добавим порцию каждого полученного термина в этот массив. Мы можем использовать этот массив в качестве аргументов для WP_Query .

Начнём с открытия новой функции и проверки, чтобы убедиться, что мы находимся на отдельной странице для нашего типа содержимого. Если вы задали вашему типу содержимого другое название, или используете уже зарегистрированный тип другой темой, то в этом коде, вам надо заменить ‘tutsplus_product’ на ваш тип содержимого.

Получение списка терминов или добавление их в массив

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

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

Это извлекает фрагмент каждого термина и добавляет его в массив $producttermnames .

Выполняем запрос

Теперь, нам надо задать аргументы запроса. Это будет внутри условия if( $productterms ) , так как мы не хотим, чтобы он выполнялся при отсутствии терминов таксономии. Добавьте это в ваш код:

Тут, мы использовали массив $producttermnames с аргументами tax_query . Это выберет любые записи с любыми терминами, которые есть в этом продукте.

Теперь запустим запрос с этими аргументами:

Это выведет элемент h2 с заголовком и список со ссылками на каждый пост. Если пожелаете, можете вывести это по-другому; можете добавить отрывок или изображение.

Как избежать ошибок

Обычно, вы не думаете, что пользователь добавит больше одного термина таксономии к каждому продукту, потому что каждый термин связан с продуктом. Но нельзя сказать наверняка, что такого никогда не случится. Вот почему мы добавили массив $producttermslist в функцию и используем его для одного экземпляра WP_Query , вместо запуска WP_Query в цикле foreach . Также это делает страницу более эффективной, так как выполняется только один дополнительный запрос.

Вся функция

Вот вся функция полностью, со всеми скобками:

Запускаем функцию

Пока что, эта функция ничего не делает. Чтобы она заработала, вам нужно сделать одну из трёх вещей:

  1. Подцепить её к существующему хуку действий в вашей теме.
  2. Добавить хук действий в вашу тему, используя do_action() и подцепив её туда.
  3. Добавить название функции в вашу тему туда, где вы хотите вывести этот список.

Для второго и третьего варианта, если вы работаете со сторонней темой, вам придётся создать дочернюю тему и редактировать её. Ещё вы можете создать файл шаблона single-tutsplus_product.php и добавить хук или функцию в него, или просто добавить это в single.php. Если вы подцепили её через файл шаблона для типа содержимого, то вы можете удалить проверку if ( is_singular( ‘tutsplus_product’ ) ) .

Я использую тему Suki из каталога плагинов WordPress. У неё в файле single.php есть данный хук:

Хук находится прямо под содержимым, именно там, где я хочу вывести мой список. Поэтому я цепляю мою функцию к этому хуку действий:

Когда вы это сделаете, сохраните ваш плагин и добавьте несколько продуктов и терминов таксономии.

Результат

Я добавила термин widget в продукт Widget и другой термин для демонстрации:

Я добавила эти два термина к нескольким записям на моем сайте, так что при просмотре страницы товара Widget, внизу, вы можете видеть список связанных записей:

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

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

Функционал произвольных записей и таксономий был внедрен разработчиками довольно давно, еще с версии 2.3, которая вышла в далеком 2007 году. Именно тогда WordPress из чисто блогового движка превратился в многофункциональныю CMS, способную решать самые разные задачи.

Произвольные таксономии — это зарегистрированные в системе категории или метки, которые никак не связаны со стандартными рубриками или метками WordPress. При регистрации любой таксономии требуется указать тип записи, для которой эта таксономия будет создаваться. Как нетрудно догадаться, это должен быть пользовательский тип записи, иначе зачем было огород городить?

Когда создается новый тип записи, эти записи надо как-то упорядочить, т.е. добавить для этого типа записи одну или несколько таксономий. Давайте создадим новый тип записи product (товар) и создадим две таксономии: иерархическую (по типу стандартных рубрик) и плоскую (по типу стандартных меток).

Плагин «Каталог товаров»

Итак, создаем директорию tokmakov-catalog и внутри нее — файл tokmakov-catalog.php :

Регистрируем пользовательский тип записи product :

Регистрируем две таксономии — иерархическую и плоскую:

Идем в панель управления и добавляем категории и метки:

После чего можно добавлять первый товар — и он появится на сайте:

Шаблоны для показа товаров

Сейчас для показа страницы товара используется шаблон single.php , который в моей теме выглядит так:

Но этот шаблон сам не выводит контент записи, а подключает для этого другой шаблон — single.php в директории parts :

Это нас не устраивает, поэтому создадим свой шаблон single-product.php , который будет подключать single-product.php в директории parts :

Обратите внимание, что вместо функций the_category() и the_tags() , которые работают с нативными таксномиями WordPress, мы используем функцию get_the_term_list() , которая позволяет получить список элементов произвольной таксономии, связанных с записью.

Аналогично можно создать шаблоны для показа списка товаров выбранной категории и списка товаров с какой-то меткой. Например, для показа товаров категории создать шаблон taxonomy-group.php , а для показа товаров с меткой — шаблон taxonomy-label.php .

Создаем меню каталога

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

Создаем файл класса виджета Product_Categories_Widget.php в директории плагина:

Далее в коде плагина подключаем файл класса и регистрируем виджет:

После того, как в панели управления мы разместим наш виджет в сайдбаре, он сформирует такой html-код:

Показываем товары на главной

Пользовательские типы записей не отображаются на главной странице по умолчанию, для этого нужно изменить главный запрос:

Вместо заключения

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

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

Опубликовано: ADv Дата 16.12.2014 в рубрике Настройки 6 комментариев

Многие люди считают WordPress инструментом исключительно для блоггинга, потому как в ВП есть записи, рубрики, теги и т.д. Чего большинство из них не знает, так это того, что все записи, рубрики и теги могут быть заменены произвольными типами записей и произвольными таксономиями. В этой статье мы покажем вам как создать произвольную таксономию в WordPress, а также как вывести эту таксономию в своей теме WordPress.

Что такое таксономия?

Таксономия в WordPress — это одна из тех вещей, которую все используют, но не знают, что они используют именно ее. Таксономии WordPress используются для группировки записей и произвольных типов записей между собой. В ВП есть две самых популярных таксономии, которые люди постоянно используют: Рубрики и Теги. Можно использовать произвольные таксономии для создания произвольных групп и объединения их под одним «началом». Например, у вас есть произвольный тип записи под названием Книги. Даже если вы используете рубрики, возможно вы не хотите смешивать два вида Книг между собой, потому что они в корне отличаются друг от друга. Для решения этой проблемы можно зарегистрировать новую произвольную таксономию под названием Тематики. Можно добавить термы тематик типа: Приключения, Романы, Фантастика и т.д. Это позволит вам и вашим пользователям сортировать книги по тематикам. Таксономии также могут иметь иерархию, что означает у вас могут быть основные тематики типа: Фентези, Фантастика и Детские. А уже у этих тематик могут быть подтемы в каждой рубрике, как например в разделе Фентези могут быть триллеры в виде подтемы.

Теперь, когда мы прояснили, что такое произвольная таксономия, давайте выясним как создавать произвольные таксономии в WordPress. Мы покажем два способа создания произвольных таксономий. Способ 1 будет использовать плагин для тех, кто не захочет возиться с кодом. Способ 2, напротив же, будет использовать код и подойдет для тех, кто предпочитает делать всё без помощи плагинов.

Создание произвольных таксономий — Простой способ

Давайте же начнем создание произвольной таксономии. Первым делом вам необходимо установить и активировать плагин Simple Taxonomy. Далее, переходим в раздел Настройки » Custom Taxonomies где и создаем новую:

В начале создания произвольной таксономии нужно задать ей название, которое должно состоять из строчных букв и НЕ содержать «странных» символов. Второй опцией мы задаем будет ли эта таксономия иерархической. Если вы хотите создать таксономию типа рубрик, где сможете добавлять родительские и дочерние термы, тогда выбирайте True, иначе же — задавайте false, если вы хотите чтобы термы добавлялись как теги.

Третья опция позволяет ассоциировать эту таксономию с типом записей, а последняя — разрешит указать, нужно ли добавлять термы автоматически, выберите none.

Но мы еще не закончили. Давайте предположим, что вы создаете таксономию и назвали ее Тематики. Теперь нужно сообщить WordPress, как она должна переводиться в интерфейсе пользователя.

После указания переводов для интерфейса, нажмите на кнопку Add Taxonomy. После того, как произвольная таксономия будет создана, она появится под меню Записи и будет выглядеть так же как и Рубрики, и Теги. Также поле произвольной таксономии появится в в окне редактора записей.

Создание произвольных таксономий вручную

Добавляем следующий код в файл functions.php вашей темы или в плагин для сайта WordPress (рекомендуется) для создания иерархической произвольной таксономии типа рубрик:

Для создания не-иерархической произвольной таксономии типа Теги, добавьте следующий код в файл functions.php вашей темы или в плагин для сайта WordPress (рекомендуется):

Обратите внимание на различия между двумя кодами. Значение для параметра иерархии — true для таксономии типа Рубрики, и false — для таксономий типа Тегов. Также в массиве названий для НЕ-иерархической таксономии типа Тегов мы добавили null для параметров parent_item и parent_item_colon, что означает, что в интерфейсе ничего не будет отображаться при создании родительского элемента.

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

Вот так можно вывести термы, которые вы добавили в произвольную таксономию на отдельной странице записи. Добавьте следующую строку кода в свой файл single.php внутри цикла:

Можно добавить его в другие файлы, такие как archive.php, index.php, и в другое место по необходимости, где нужно вывести таксономию.

По-умолчанию ваши произвольные таксономии используют шаблон archive.php для отображения записей. Однако, вы можете создать собственный архив для их отображения по такому принципу — taxonomy-.php.

Произвольные таксономии могут использовать различными способами. Совмещение их с произвольными типами записей и произвольными мета-блоками помогут вам создать хорошо настраиваемую систему управления контентом (CMS), которая максимально будет соответствовать вашим задачам.

Напишите, как вы используете произвольные таксономии на своих сайтах.

По всем вопросам и отзывам просьба также писать в комментарии ниже.

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

Custom Post Types: пользовательские таксономии, фильтры и архивы в WordPress

Эта статья — вторая часть полного Руководства по кастомным типам записей WordPress. Прежде чем погрузиться с головой в чтения данного практического руководства, пробегитесь взглядом по первоначальному уроку касательно настраиваемых типов публикаций Custom Post Types (далее сокращенно — CPT) для понимания базовых принципов и возможностей.

| Скачать исходники |

В этом же руководстве мы поговорим более подробно о том, какие возможности настраиваемых постов есть, и как эти возможности использовать на благо вашего сайта: настраиваемая таксономия, администрирование контента в столбцах, таксономические фильтры и создание архивной страницы с настраиваемым типом публикаций — все это собрано в данном посте. Итак, приступим.

Настраиваем таксономию для собственных типов публикаций

Таксономия позволяет отличным образом группировать различные объекты и поможет нам находить посты, которые относятся к конкретной группе опубликованных на сайте материалов. Обычно в WordPress используется для такой систематизации принадлежность записей к Рубрикам либо отбор по Меткам. Мы же создадим настраиваемую таксономию для своих CPT.

Шаг 1. Регистрируем настраиваемую функцию

Открываем файл плагина (см. предыдущий урок, в нашем случае это Movie-Reviews.php) и добавляем в него следующий код для регистрации пользовательской функции:

Шаг 2. Внедряем нашу функцию и регистрируем настраиваемую таксономию

Здесь функция register_taxonomy отвечает за всю важную работу касательно создания настраиваемой таксономии (или категории — как в нашем случае) с именем ‘ movie_reviews_movie_genre ‘ для пользовательского типа постов ‘ movie_reviews ‘ (в качестве примера нам служит сайт с обзорами и отзывами о кинофильмах). Ярлыки определяют разные строки, которые используются в секции администрирования таксономии:

  • show_ui‘ =>true используется для включения редактора таксономии в панели управления.
  • show_tagcloud‘ =>false служит для отключения облака тегов.
  • hierarchical‘ =>true отвечает за формат настраиваемой таксономии.

Примечание: ‘hierarchical‘ => false отвечает за конверсию рубрик в теги.

Шаг 3. Отображение настраиваемой таксономии

После сохранения файла Movie-Reviews.php откройте свой файл с настраиваемым шаблоном — в нашем случае речь идет о файле single-movie_reviews.php — и добавьте в него следующий выделенный цветом код для включения категорий для наших постов:

Шаг 4. Что получилось

Вот мы добавили настраиваемую таксономию Movie Genre для наших постов с обзорами кинофильмов. Теперь мы сможем добавлять новые категории из админ-панели и назначать эти категории для наших CPT.

Отображение дополнительных столбцов

На странице с администрируемым списком WordPress CPT по умолчанию есть 2 колонки: Date и Comments, которые отвечают за сортировку наших пользовательских записей. Чтобы добавить другие столбцы и включить сортировку для них, выполните следующие пошаговые действия.

Шаг 1. Регистрируем функцию

Откройте файл плагина Movie-Reviews.php и добавьте в него следующую строку кода для регистрации функции, вызываемой при подготовке перечня обзоров кинофильмов:

Здесь мы применили переменный фильтр manage_edit-( Custom_Post_Type )_columns, который передает список постов в столбце как аргумент в нашу функцию.

Шаг 2. Внедряем функцию

Мы добавили 2 колонки: Director и Rating. Они появятся в админ-панели для CPT. Также мы удалили колонку Comments из нашего списка.

Шаг 3. Наполняем столбцы

Регистрируем функцию для наполнения столбцов.

Шаг 4. Внедрение

Здесь функция проверяет, какие из запрошенных колонок есть, прежде чем обратиться к ним. Мы использовали функцию get_the_ID() для определения текущего ряда и и далее для передачи данных в get_post_meta для запроса содержимого из конкретного столбца.

Шаг 5. Регистрация колонок как сортируемых списков

Теперь давайте зарегистрируем функцию, которая будет вызываться, когда WordPress идентифицирует сортируемые столбцы в CPT.

Шаг 6. Внедрение

Эта функция идентифицирует 2 колонки, которые будут отсортированы, а затем возвращает массив данных. Но на этом этапе работа еще не завершена.

Шаг 7. Упорядочиваем по выбранному полю

Приведенная выше функция связана с фильтром запросов и добавляет элементы к массиву запросов на основе переменных, определенных в запрашиваемом URL. Сам по себе WordPress «не знает», как упорядочить наши посты согласно выборке полей Movie Director или Movie Rating, так что нам придется «научить» наш WordPress, как это сделать. Для этой цели нам и нужна данная функция.

Мы успешно добавили 2 сортируемых колонки в секцию администрирования:

Создаем фильтры для настраиваемой таксономии

Здесь мы увидим, как настраиваемая таксономия (в нашем случае — это категории) может быть использована в качестве дополнительного фильтра при составлении списка CPT в секции администрирования WordPress, чтобы администраторы могли отобразить элементы CPT, принадлежащие к конкретной категории.

Шаг 1. Регистрация функции

Откройте файл плагина и добавьте в него следующий код для регистрации функции. Эта функция будет вызвана, когда WordPress будет готовиться к отображению выпадающего списка с результатами фильтрации контента.

Шаг 2. Внедрение функции

Мы использовали глобальную переменную, чтобы узнать, какой тип поста отображать, а также использовать запрос к посту для проверки его на совпадение с уже существующими фильтрами. Функция wp_dropdown_categories применяется для отображения всех типов таксономии, которые зарегистрированы в разделе Movie Genres.

Аргументы orderby, show_count, hide_empty, depth и другие определяют сортировку, отображение счетчиков числа постов в каждой категории, скрывают не связанные с ними категории, определяют максимальную глубину для отображения в иерархической структуре категорий.

Шаг 3. Отображение фильтрованных результатов

После того, как мы сформировали выпадающий фильтрованный список, мы напишем немного кода для отображения на экране наших результатов фильтрации. Зарегистрируем функцию, которая будет вызываться всякий раз при подготовке запроса на отображение результатов фильтрации:

Шаг 4. Внедрение функции отображения контента

Функция perform_filtering получает объект запроса на конкретный пост от WordPress, а затем переводит запрос и отображает контент согласно набору переменных, содержащихся в теле объекта. Также на данном этапе происходит верификация того, является ли параметр Movie Genre частью запрашиваемых переменных, и только потом происходит выполнение запроса. Теперь вы сможете использовать фильтр для отображения кинофильмов по жанрам:

Последнее по порядку, но не по значимости: Создаем страницу архива

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

Шаг 1. Создаем для архива путь для перехода и вызова

Откройте файл плагина Movie-Reviews.php и добавьте выделенный цветом код в функцию include_template_function:

WordPress производит поиск в папке темы для файла с шаблоном архива, прежде чем использовать сам архив. Эта функция отвечает за проверку наличия самого шаблона с архивом в папке архивных публикаций. Если ее нет — то выполняет поиск файла архива в папке с плагинами.

Шаг 2. Создаем шаблон архива

Сохраните и закройте файл плагина и затем создайте новый файл под названием archive-movie_reviews.php. Вставьте в него следующий код:

Мы используем здесь цикл для того, чтобы провести поиск по всем постам и отобразить их в формате таблицы. Также мы тут определили навигационное меню для того, чтобы определить, не больше ли у нас постов, чем указано в настройках WordPress. Навигационные меню отображаются благодаря функциям next_post_links и previous_post_links.

Мы также использовали объект wp_query, в котором содержатся данные об исполняемом в данный момент запросе в порядке рендеринга требуемых элементов и содержимого страницы. Функция get_post_meta использовалась для получения данных из настраиваемых полей.

Шаг 3. Что получилось в итоге

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

Вот мы и завершили «путешествие» по нашему практическому руководству. Надеемся, что мы смогли вас убедить в значительной роли и больших возможностях настраиваемых типов записей. Есть немало возможностей для их практического применения, поэтому советуем вам самим экспериментировать с настраиваемыми постами. И, как всегда, будем рады отзывам и мнениям в комментариях к этой публикации.

Источник: WP.tutsplus.com

Насколько полезным был этот пост?

Нажмите на звезду, чтобы оценить этот пост!

Средний рейтинг: 5 / 5. Количество голосов: 21

Топ-пост этого месяца:  Как Google обрабатывает директивы nofollow, добавленные с помощью JavaScript
Добавить комментарий