Если взять встроенный блог вордпресс, то мы знаем — любая запись сохраняется в категории Default, если не задана другая.
Как добиться такого же эффекта для кастомных типов записей?
То есть мы создали тип записи Портфолио, к примеру. В нем категории: Дизайн, Медиа, Печать. И создали страницу, где выводятся все посты из Портфолио. Иногда нам может понадобиться такой функционал, когда выводятся все посты из Дизайна и Медиа, а Печать нужно скрыть и вывести на другой странице.
То есть выборку нужно осуществить не по таксономии (Портфолио), а по категориям внутри этой Таксономии (Дизайн, Медиа, Печать).
Даю код сразу на создание Кастомного Типа Поста (Custom Post Type), Кастомной Таксономии (Custom Taxonomy) для этого типа поста и, наконец, создание категории по умолчанию внутри Кастомной Таксономии, так как ОЧЕНЬ ВАЖНО проставить везде правильные имена, иначе ничего не будет работать! Весь код добавляем в конец нашего functions.php.
Кастомный Тип Поста:
// Creates People Custom Post Type function people_init() { $args = array( 'label' => 'People', 'public' => true, 'show_ui' => true, 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => array('slug' => 'people'), 'query_var' => true, 'menu_icon' => 'dashicons-groups', 'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes',) ); register_post_type( 'people', $args ); flush_rewrite_rules(); } add_action( 'init', 'people_init' );
Кастомная Таксономия:
register_taxonomy("people_tax", array("people"), array("hierarchical" => true, "label" => "People Categories", "singular_label" => "People Item", "rewrite" => true));
ОБРАТИТЕ ВНИМАНИЕ — уже на этом этапе, если тип поста у вас people, то для таксономии задайте ДРУГОЕ имя!!! В данном случае — people_tax, при этом для array (где указывается пост, для которого мы таксономию делаем) указываем опять people.
И наконец создание категории по умолчанию:
/* Default Category of People Post */ function add_people_tax_category_automatically($post_ID) { global $wpdb; if(!has_term('','people_tax',$post_ID)){ $cat = array(2); wp_set_object_terms($post_ID, $cat, 'people_tax'); } } add_action('publish_people', 'add_people_tax_category_automatically');
add_people_tax_category_automatically — название функции, которую мы вызываем через add_cation.
people_tax — таксономия, созданная выше
при этом в конце в add_action мы указываем publish_people! НЕ publish_people_tax!
И самая важная строка кода внутри добавления категории по умолчанию:
$cat = array(2);
Что это за двойка?
У вас это будет ДРУГОЕ число.
Идете в админку, создаете категорию, которая будет у вас по умолчанию. Естественно, создаете ее внутри Категории Кастомного типа поста People — он появится после обновления файла functions.php слева в меню админки. Создали категорию, вошли в нее (как для редактирования) и смотрите в адрес урл. Где-то там, в середине адреса страницы найдите tag_ID=2 (это у меня — 2, у вас — номер ВАШЕЙ созданной категории). Вот этот номер и нужно вставить в строку
$cat = array(2);
Теперь идем в создание новой записи внутри People, публикуем — и вуаля — галочка на вашей дефолтной категории появится автоматически!
Ничего не вышло? Идете сверху вниз по своему коду, читаете заново все мои предупреждения и находите у себя ошибку ).
You must be logged in to post a comment.