Перед тем, как решить задачу нашего читателя подробнее рассмотрим функционал таксономий и подхода с одной таксономией для нескольких типов записей.
Немного теории
Если вы оказались в этом материале, то скорее всего, вы знакомы с понятием таксономий, но всеже поясним. Таксономия в WordPress — это способ организации контента с помощью категорий или тегов. Она помогает группировать похожие записи, упрощая навигацию по сайту. Представьте библиотеку: таксономия — это система полок, а термины — отдельные полки, куда вы раскладываете записи, как книги. Это работает для любых типов записей, включая стандартные. Узнать больше подробностей можно в документации.
Одна таксономия может использоваться для объединения похожего контента. Например, на сайте о машинах можно создать записи «Обзоры авто» и «Автособытия». Их можно группировать по таксономии «Марка авто» (например, Skoda, Toyota, Tesla). В таком случае, это добавит удобства на сайт: всё про одну марку собрано вместе, и пользователи легко находят нужное, контент специалисту проще ориентироваться в админке и управлять категориями. Но это также может и усложнить работу с сайтом, приведем другой пример: на сайте о путешествиях есть записи «Туры» (путешествия) и «Статьи». Оба сортируются по таксономии «Направление» (Европа, Азия, Африка). «Направление» важно для туров, а статьи могут быть и общими, например, о том, как выбрать отель, без привязки к региону. В таком случае, это собьет с толку, как пользователей, так и редакторов сайта.
Изучив данные нашего читателя, мы согласны с тем, что их логично привязать к одной таксономии. Перейдем к практике.
Заводим одну таксономию для нескольких типов записей
Возьмём данные из вопроса и рассмотрим их на примере. Город может быть связан с любой из сущностей: футбольным полем, магазином, школой или командой. Привяжем эти сущности к данной таксономии.
Особых секретов в процессе нет, мы используем стандартную функцию
add_actionдля регистрации таксономии, но указываем массив сущностей, для которых нужно добавить.
function register_city_taxonomy() {
$labels = array(
'name' => _x('Город', 'taxonomy general name'),
'singular_name' => _x('Город', 'taxonomy singular name'),
'search_items' => __('Поиск города'),
'all_items' => __('Все города'),
'parent_item' => __('Родительский город'),
'parent_item_colon' => __('Родительский город:'),
'edit_item' => __('Редактировать город'),
'update_item' => __('Обновить город'),
'add_new_item' => __('Добавить новый город'),
'new_item_name' => __('Новое название города'),
'menu_name' => __('Города'),
);
$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'city'),
);
register_taxonomy('city', array('venue', 'football-market', 'football-school', 'football-team'), $args); //передаем типы записей, у которых должна быть данная таксономия
}
add_action('init', 'register_city_taxonomy');
Данный код необходимо добавить в файл functions.php вашей темы, указав нужные типы записей и параметры таксономии.
После сохранения изменений не забудьте обновить структуру постоянных ссылок в WordPress (Настройки → Постоянные ссылки → Сохранить изменения). Это необходимо для применения правок в файле .htaccess. Если всё сделано правильно, таксономия «Город» будет отображаться для указанных типов записей.