ЗАВАНТАЖИТИ ВИХІДНІ ФАЙЛИ | ПОДИВИТИСЯ ДЕМО

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

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

У цій статті я покажу вам, як створити сторінку таксономії, на якій записи будуть виводитися у відповідності з термінами другий таксономії, до якої вони належать.

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

Що нам знадобиться:

  • Встановлена система WordPress;
  • Редактор коду.

1. Створення теми

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

Щоб створити тему, я розміщую у порожній теці теми файл з ім’ям style.css і додаю в нього наступний код:

/*
Theme Name: WPTutsPlus Create a Taxonomy Archive to List Posts by a Second Taxonomy’s Terms
Theme URI: http://rachelmccollin.co.uk/wptutsplus-taxonomy-archive-list-by-second-taxonomy/
Description: Theme to support WPTutsPlus tutorial on creating a custom taxonomy archive. Child theme for the Twenty Fourteen theme.
Author: Rachel McCollin
Author URI: http://rachelmccollin.co.uk/
Template: twentyfourteen
Версія: 1.0
*/
@import url(«../twentyfourteen/style.css»);

Таким чином, ми створимо дочірню тему.

2. Реєстрація типу записів і таксономій

Для цієї статті я буду використовувати той же тип записів ‘animals’ і таксономію ‘animal_cat’, які я використовувала у статті про створення шаблону користувальницького типу записів. Я також додам ще одну таксономію під назвою ‘habitat’.

Для цього я створюю новий файл з ім’ям functions.php. По-перше, я додаю функцію, щоб зареєструвати мій тип записів:

__( ‘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(
‘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
)
);
// Реєструємо таксономію ‘Habitat’
register_taxonomy( ‘habitat’, ‘animal’,
array(
‘labels’ => array(
‘name’ => ‘Habitats’,
‘singular_name’ => ‘Habitat’,
‘search_items’ => ‘Search Habitats’,
‘all_items’ => ‘All Habitats’,
‘edit_item’ => ‘Edit Habitat’,
‘update_item’ => ‘Update Habitat’,
‘add_new_item’ => ‘Add New Habitat’,
‘new_item_name’ => ‘New Habitat Name’,
‘menu_name’ => ‘Habitat’,
),
‘hierarchical’ => true,
‘sort’ => true,
‘args’ => array( ‘orderby’ => ‘term_order’ ),
‘show_admin_column’ => true
)
);
}
add_action( ‘init’, ‘wptp_register_taxonomies’ );
?>

Ми створили тип записів ‘animal’ і дві таксономії, які до нього застосовуються. Зверніть увагу, що я використовувала ‘show_admin_column’, щоб пізніше мені було простіше адмініструвати запису.

Після додавання інформації і класифікації тварин згідно з різними класифікаціями, ці дані будуть відображатися в панелі адміністрування WordPress наступним чином.

Архіви класифікацій: Висновок список записів таксономії по термінам другий таксономії

3. Створення файлу шаблону першої таксономії

Наступним кроком є створення файлу шаблону для таксономії архіву ‘animal_cat’. У папці теми створіть файл і назвіть його taxonomy-animal_cat.php. Тепер додайте в нього код «обгортки» з вашої теми (я скопіювала його з батьківського теми; якщо ви використовуєте власну тему, ваш код буде відрізнятися):

Визначення поточного запитуваної терміна

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

Нижче рядка get_header (), додайте наступний код:

Ви можете використовувати змінну $animalcat пізніше.

Висновок заголовка сторінки

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

Після цього тега
додайте наступний код:

name; ?>

Отримання термінів другий таксономії

Далі потрібно отримати список термінів другий таксономії. Нижче коду, який ви тільки що додали, вставити наступні рядки:

0
) );
?>

Даний код отримує список всіх термінів і зберігає його в масив. З допомогою ‘hide_empty’ ви можете приховати всі порожні терміни. Але це тільки запобігає запити термінів, до яких не належить ні одна із записів, а не тих термінів, які не призначені постам, що належить відповідного терміну.

Створення циклу

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

‘animal’,
‘animal_cat’ => $animalcat->slug,
‘habitat’ => $term->slug
);
$query = new WP_Query( $args );
// виводимо назва терміна в тегу заголовка
echo’

‘. $term->name . ‘ habitat

‘;
// виводимо заголовки записів списком
echo ‘