Що ви будете створювати

В попередній статті я показала, як створити архів таксономії, в якому перераховані записи по термінам таксономії.

Тема цієї статті трохи схожа на неї, тому що тут я покажу, як відібрати повідомлення з архівів, але ми будемо використовувати іншу структуру і інший файл шаблону. Я розповім, як створити шаблон архіву для таксономії, в якому повідомлення будуть виводити за типом запису:

Це може стати в нагоді вам, якщо ви реєструєте тип записів, які потрібно зберігати окремо від звичайних постів або від записів інших типів, однак маєте одну і ту ж таксономію, яка застосовується до обох типів.

Наприклад, якщо ви створюєте списки книг і статей, як списки записів різних типів, і в якості таксономії до них застосовуються одні і ті ж теми (наприклад, WordPress!)

У моєму прикладі я буду працювати з типом записів ‘animals’, який я створила в попередній статті, але тепер я буду працювати і з звичайними записами. Спочатку я поставлю список тварин з терміном для запиту, а потім виведу в блозі список записів з цим терміном.

1. Приступаємо до роботи: Створення теми

Я створю тему, яка буде дочірньої для теми twentyfourteen, так що якщо ви використовуєте вихідні файли для цього уроку, вам також необхідно встановити на вашому сайті цю тему. У стилі моєї теми я додаю наступне:

/*
Назва теми: WPTutsPlus Creating a Taxonomy Archive to List Posts by Post Type
URI-адреса теми: http://rachelmccollin.co.uk/wptutsplus-tax-archive-by-post-type/
Опис: Тема для створення користувальницького архіву таксономії. Дочірня для теми Twenty Fourteen.
Автор: Рейчел МакКоллин
Author URI: http://rachelmccollin.co.uk/
Шаблон: twentyfourteen
Версія: 1.0
*/
@import url(«../twentyfourteen/style.css»);

Все це потрібно додати, щоб створити дочірню тему. Якщо ви використовуєте власну тему, можете пропустити цей пункт.

2. Реєструємо тип запису і таксономію

Примітка: Якщо ви читали інші мої статті щодо створення шаблону архіву записів типу, ви можете використовувати тему, створену в них, так як там використовуються ті ж типи записів і таксономія. Вам просто потрібно зробити одну хитрість, про яку я розповім в цьому розділі, а також додати новий шаблон для архіву таксономії.

Наступним етапом буде реєстрація типу запису ‘animal’ і таксономії ‘animal family’. Створіть файл functions.php для вашої теми і в першу чергу додайте функцію для реєстрації записів:

// реєстрація користувальницького типу записів під назвою ‘animals’
function wptp_create_post_type() {
$labels = array(
‘name’ => __( ‘Animals’ ),
‘singular_name’ => __( ‘animal’ ),
‘add_new’ => __( ‘New animal’ ),
‘add_new_item’ => __( ‘Add New animal’ ),
‘edit_item’ => __( ‘Edit animal’ ),
‘new_item’ => __( ‘New animal’ ),
‘view_item’ => __( ‘View animal’ ),
‘search_items’ => __( ‘Search animals’ ),
‘not_found’ => __( ‘No animals Found’ ),
‘not_found_in_trash’ => __( ‘No animals found in Trash’ ),
);
$args = array(
‘labels’ => $labels,
‘has_archive’ => true,
‘public’ => true,
‘hierarchical’ => false,
‘supports’ => array(
‘title’,
‘editor’,
‘excerpt’,
‘custom-fields’,
‘thumbnail’,
‘page-attributes’
),
‘taxonomies’ => array( ‘post_tag’, ‘category’),
);
register_post_type( ‘тварини’, $args );
}
add_action( ‘init’, ‘wptp_create_post_type’ );

Потім зареєструйте таксономію сімейств тварин.

Якщо ви працюєте з темою, створеної в попередній статті, ви повинні будете додати до аргументів функції array(‘animal,’post’), призначений тільки для ‘animal’:

// реєстрація таксономії під назвою ‘Animal Family’
function wptp_register_taxonomy() {
register_taxonomy( ‘animal_cat’, array( ‘тварини’, ‘post’ ),
array(
‘labels’ => array(
‘name’ => ‘Animal Families’,
‘singular_name’ => ‘Animal Family’,
‘search_items’ => ‘Search Animal Families’,
‘all_items’ => ‘All Animal Families’,
‘edit_item’ => ‘Edit Animal Families’,
‘update_item’ => ‘Update Animal Family’,
‘add_new_item’ => ‘Add New Animal Family’,
‘new_item_name’ => ‘New Animal Family Name’,
‘menu_name’ => ‘Animal Family’,
),
‘hierarchical’ => true,
‘sort’ => true,
‘args’ => array( ‘orderby’ => ‘term_order’ ),
‘rewrite’ => array( ‘slug’ => ‘animal-family’ ),
‘show_admin_column’ => true
)
);
}
add_action( ‘init’, ‘wptp_register_taxonomy’ );

Збережіть файл функцій, після чого ви побачите, що в панелі адміністрування вашого сайту з’явилися ваші нові тип запису і таксономія.

Тепер додайте дані — я додала кілька тварин і записів для сімейства ‘Canines’.

3. Створення шаблону архіву

Тепер створіть файл з назвою taxonomy-animal_cat.php. Це буде шаблон архіву для нової таксономії.

Скопіюйте код оболонки з вашої теми в даний файл, так щоб він містив елементи і класи, спільні з іншою частиною теми. Я копіюю їх з twentyfourteen — якщо ви використовуєте власну тему, скопіюйте ці елементи з неї.

Скопіюйте всі, крім заголовка циклу, і додайте у верхній частині коментарі, які нагадають вам, для чого призначений цей файл:

4. Визначення запитуваного об’єкта

Щоб ви могли відобразити назву запитуваного терміна і визначити запити в двох циклах, які ви створите, вам необхідно визначити запитуваний об’єкт і зберегти його в якості змінної.

Додайте наступний код де-небудь у верхній частині шаблону архіву (я додаю його нижче виклику get_header()):

Ми використовуємо цей код на наступному етапі.

5. Висновок заголовка архіву

Перед додаванням циклу необхідно вивести заголовок сторінки вашого архіву. Всередині діва #content додайте наступний код:

name; ?>

6. Перший цикл

Під заголовком необхідно додати перший цикл, використовуючи WP_Query, так як ви повинні визначити аргументи.

По-перше, визначити запит:

// Визначення запиту
$args = array(
‘post_type’ => ‘animal’,
‘animal_cat’ => $term->slug
);
$query = new WP_Query( $args );

Зауважте, що тут використовується змінна $term, яку ви вже визначили.

Потім додаємо цикл, виводячи посилання для кожної тварини неупорядоченном списку:

if ($query->have_posts()) {
// вивід назви терміна в тегу заголовка
echo’

Тварина ‘ . $term->name . ‘Family

‘;
// висновок заголовків записів у списку
echo ‘