Использование WP_Query с пользовательскими таксономиями

УрокиКомментариев нет

Как только вы добавили пользовательскую таксономию, вам наверняка понадобится делать запросы к базе для получения записей с терминами этой таксономии. Чтобы сделать это, мы можем воспользоваться WP_QUERY с запросами к таксономиям.

Запросы к таксономиям могут быть очень простыми или более сложными. Простейшим будет запрос на все записи с определенным термином. Например, если у вас есть тип записи «джедай» и ассоциированная пользовательская таксономия «level» (уровень), то получить всех мастеров Джедаев вы сможете так:

<?php
    $args = array(
        'post_type' => 'джедай',
        'level' => 'мастер'
    );
    $query = new WP_Query( $args );
?>

Если вы добавили вторую пользовательскую таксономию «era» (эпоха), то найти всех мастеров Джедаев эпохи Старой Республики можно так:

<?php
    $args = array(
        'post_type' => 'джедай',
        'level' => 'мастер',
        'era' => 'старая_республика',
    );
    $query = new WP_Query( $args );
?>

Мы также можем делать более сложные сравнения, использовав полную tax_query. Аргумент tax_query позволяет нам искать по ID вместо слага (как мы делали раньше) и искать более одного термина. Также можно комбинировать множество запросов к таксономиям и устанавливать отношения между двумя. В добавок мы можем даже использовать SQL оператор NOT IN для исключения термина.

Возможности безграничны. Исследуйте Справочник классов/WP_Query раздела «Taxonomy Parameters» Кодекса для более подробной информации. Фрагмент кода ниже ищет в нашем типе записей «джедай» рыцарей Джедаев и мастеров Джедаев, кто не из эпохи Старой Республики:

<?php
    $args = array(
        'post_type' => 'джедай',
        'tax_query' => array(
        'relation' => 'AND',
            array(
                'taxonomy' => 'level',
                'field' => 'slug',
                'terms' => array( 'мастер', 'рыцарь' )
            ),
            array(
                'taxonomy' => 'era',
                'field' => 'slug',
                'terms' => array( 'старая_республика' ),
                'operator' => 'NOT IN'
                )
        )
    );
    $query = new WP_Query( $args );
?>

Статьи из раздела:

  1. Как работают архивы таксономий, тегов, категорий и пользовательских типов таксономий.
  2. Создание пользовательских таксономий
  3. Добавление пользовательских типов записей к архивам категорий и тегов.
  4. Делаем архивы категорий или таксономии иерархическими
  5. Создание пользовательской целевой страницы для архивов таксономий

Будь первым кто прокомментирует статью.

Добавить комментарий

Войти с помощью: