Для того чтобы создать новую таксономию к примеру Авторы нам нужно отредактировать файл functions.php своей темы.
Добавляем следующий php код:
// Регистрация новой таксономии:
add_action( 'init', 'create_taxname', 0 );
function create_taxname () {
$args = array(
// Название таксономии
'label' => _x( 'Авторы', 'taxonomy general name' ),
// Значения таксономии в админ-панели:
'labels' => array(
// Общее название таксономии (множественное число).
// По умолчанию: 'МеткИ' или 'РубрикИ'
'name' => _x( 'Имена', 'taxonomy general name' ),
// Название таксономии (единственное число).
// По умолчанию: 'МеткА' или 'РубрикА'
'singular_name' => _x( 'Авторы', 'taxonomy singular name' ),
// Название таксономии в пункте меню.
'menu_name' => __( 'Имена' ),
// По умолчанию: 'Все метки' или 'Все рубрики'
'all_items' => __( 'Все Имена' ),
// Текст изменения таксономии на странице редактирования.
// По умолчанию: 'Изменить метку' или 'Изменить рубрику'
'edit_item' => __( 'Изменить имя' ),
// Текст в админ-панели на странице редактирования данной таксономии.
// По умолчанию: 'Просмотреть метку' или 'Просмотреть рубрику'
'view_item' => __( 'Просмотреть Имена' ),
// Текст обновления таксономии во вкладке свойства.
// По умолчанию: 'Обновить метку' или 'Обновить рубрику'
'update_item' => __( 'Обновить имя' ),
// Текст добавления новой таксономии при ее создании.
// По умолчанию: 'Добавить новую метку' или 'Добавить новую рубрику'
'add_new_item' => __( 'Добавить новое имя' ),
// Название таксономии при ее создании и редактировании.
// По умолчанию: 'Название'
'new_item_name' => __( 'Название' ),
// Текст родительской таксономии при создании и редактировании.
// Для древовидных таксономий.
// По умолчанию: Родительская.
'parent_item' => __( 'Родительская' ),
// То же, что и parent_item, но с добавлением двоеточия.
// По умолчанию: 'Родительская:'
'parent_item_colon' => __( 'Родительская:' ),
// Текст в кнопке поиска на странице всех таксономий.
// По умолчанию: 'Поиск меток' или 'Поиск рубрик'
'search_items' => __( 'Поиск имени' ),
// ЧЕТЫРЕ НИЖНИХ параметра НЕ используется для древовидных таксономий:
// Надпись популярных таксономий (на странице всех таксономий).
// По умолчанию: Популярные метки или null.
'popular_items' => null,
// Надпись разделения таксономий запятыми в метабоксе.
// По умолчанию: Метки разделяются запятыми или null.
'separate_items_with_commas' => null,
// Надпись добавления или удаления таксономий в метабоксе когда JavaScript отключен.
// По умолчанию: Добавить или null.
'add_or_remove_items' => null,
// Текст выбора из часто используемых таксономий в метабоксе.
// По умолчанию: Выбрать из часто используемых или null.
'choose_from_most_used' => null,
// Текст в случае, если запрашиваемая таксономия не найдена.
// По умолчанию: 'Меток не найдено. или 'Рубрик не найдено.
'not_found' => __( 'Имя не найдено.' ),
),
// Если true, то таксономия становится доступной для использования.
'public' => true,
// Доступность таксономии для управления в админ-панели, но не показывает ее в меню.
// По умолчанию: 'public'.
'show_ui' => true,
// Показывать таксономию в админ-меню.
// Значение аргумента 'show_ui' должно быть true.
// По умолчанию: значение аргумента 'show_ui'.
'show_in_menu' => true,
// Добавляет или исключает таксономию в навигации сайта "Внешний вид -> Меню"
// По умолчанию: 'public'.
'show_in_nav_menus' => true,
// Позволяет виджет 'Облако меток' использовать в таксономии.
// По умолчанию: 'show_ui'.
'show_tagcloud' => true,
// Показ таксономии в меню быстрого доступа.
// По умолчанию: 'show_ui'.
'show_in_quick_edit' => true,
// Обеспечивает показ метабокса с таксономией в записи. По умолчанию: null.
'meta_box_cb' => null,
// Позволяет автоматическое создание столбцов таксономии в таблице ассоциативных типов постов.
// По умолчанию: false.
'show_admin_column' => false,
// Подключает описание таксономии в таблице со всеми таксономиями. По умолчанию: ''
'description' => '',
// Делает таксономию древовидной как рубрики или недревовидной как метки. По умолчанию: false.
'hierarchical' => true,
// Название функции, вызываемая после обновления ассоциативных типов объектов записи (поста)
// Действует во многом как хук.
// По умолчанию: ''.
'update_count_callback' => '',
// Значение запроса. По умолчанию: true.
'query_var' => true,
// Перезапись URL. По умолчанию: true.
'rewrite' => array(
// Текст в ЧПУ. По умолчанию: название таксономии.
'slug' => 'person',
// Позволяет ссылку добавить к базовому URL.
'with_front' => false,
// Использовать (true) или не использовать (false) древовидную структуру ссылок.
// По умолчанию: false.
'hierarchical' => true,
// Перезаписывает конечное значение таксономии. По умолчанию: EP_NONE.
'ep_mask' => EP_NONE,
),
/*
// Массив полномочий зарегестрированных пользователей:
'capabilities' => array(
'manage_terms' => 'manage_resource',
'edit_terms' => 'manage_categories',
'delete_terms' => 'manage_categories',
'assign_terms' => 'edit_posts',
),
*/
// Должна ли таксономия запоминать порядок, в котором посты были созданы.
// По умолчанию: null.
'sort' => null,
// Является ли таксономия собственной или встроенной.
// Рекомендация: не использовать этот аргумент при регистрации собственной таксономии.
// По умолчанию: false.
'_builtin' => false,
);
// Названия типов записей к которым будет привязана таксономия
register_taxonomy( 'person', array('post'), $args );
}
После редактирования файла functions.php появилась новая категория с авторами книг, либо списком актеров кому для чего нужна новая таксономия ( категория) WordPress
Далее создадим шаблон для своей категории
Создаем файл taxonomy-person.php и переносим все содержимое archive.php в него.
В верху меняем php код на этот
// категория таксономия
elseif (is_tax(person) ) {
get_template_part( '/taxonomy-person' );
}
вот примеры других кодов под разные таксономии
<?php
// Если это конкретные категории
if (is_category(array('102','103','104')) ) {
get_template_part( '/archives/raitings' );
}
// категория таксономии
elseif (is_tax(person) ) {
get_template_part( '/taxonomy-person' );
}
// категория поиск
elseif (is_search() ) {
get_template_part( '/search' );
}
// категория теги и всё другое
else {
get_template_part( '/archives/tag' );
}
?>
У меня у самого как то была похожая проблема. вместо вставки кода тупо переименовывал архив и не понимал почему не выходит=) так что дерзайте надеюсь кому-нибудь это поможет
Один ответ
Добрый день.
Мне очень понравилась ваша статья. все доходчиво и понятно. спасибо.