Использование запросов WP_Query в WordPress — часть 7 (аргументы для получения категорий, тегов)

Этот практический урок будет посвящен рассмотрению аргументов, которые можно использовать для получения публикаций определенных категорий и тегов с помощью запроса WP_Query в ВордПресс.

Из предыдущих частей этой серии уроков вы узнали о структуре запроса WP_Query и некоторых его свойствах и методах. Также мы перешли к практическому освоению и пониманию аргументов, в частности, при получении постов, страниц и публикаций определенного типа.

Поскольку в запросе WP_Query имеется множество возможных аргументов, их рассмотрение разделено на подтемы. И сегодняшняя тема — аргументы для получения из базы данных публикаций на основе их категорий и тегов. Хотя эти две таксономии схожи между собой, однако имеют некоторые отличия, о которых вам нужно знать.

 

Параметры аргументов запроса для получения публикаций по категории

Начнем с рассмотрения параметров категории. Вы можете использовать один из следующих вариантов:

  • использование идентификатора категории: cat (int)
  • использование слага категории (НЕ имя): category_name (string)
  • использование массива «вхождения» идентификаторов категории: category__and (array)
  • использование массива «вхождения» идентификаторов категории: category__in (array)
  • использование «исключающего» массива идентификаторов категории: category__not_in (array)

 

Важный момент: «опасно» использовать название категории, а также ее слаг, поскольку это можно в любой момент изменить. А идентификатор (ID) — это неизменная вещь, использование которой позволит вам избежать потенциальных проблем.

А теперь давайте перейдем к отдельному рассмотрению каждого из этих параметров.

 

Параметр cat аргументов запроса по категории

Параметр cat прост: достаточно указать один идентификатор категории (ID) или строку из идентификаторов категории, как показано ниже:

<?php
$args = array(
  'cat' => '8' // ID одной нужной категории
  // если нужно несколько категорий, тогда используйте строку с ID
  // 'cat' => '5, 6, 7' // ID нескольких нужных категорий — string
  // если нужно исключить категорию из запроса — поставьте перед ID знак минуса
  // 'cat' => '9, -10' // чтобы исключить категорию под ID 10
);
?>

Пример кода выше прикажет движку извлечь из базы данных публикации из любой из перечисленных категорий. Если вам нужны публикации в каждой из массивов категорий, то используете параметр category_and (об этом далее).

Чтобы исключить категорию из запроса, используйте запись ID категории в cat со знаком минус перед ним, как показано в примере.

 

Параметр category_name аргументов запроса по категории

Параметр category_name использует слаг категории (! не имя). Подобно предыдущему примеру можно использовать параметр с отдельной категорией или со списком категорий в строке:

<?php
$args = array(
  // запрос публикаций из одной категории:
  'category_name' => 'slag-kategoriyi' // слаг нужной категории
  // чтобы найти публикации в нескольких категориях:
  // 'category_name' => 'slag-kategoriyi, drugaya-kategoriya, esche-odin-slag' // слаг нужных категорий
);
?>

 

Параметр category__and аргументов запроса по категории

Если вам нужна публикация во всех категориях, используйте этот параметр. Сюда следует передавать идентификаторы категории (ID). Например, чтобы найти публикации во всех трех категориях, вот как может выглядеть запись аргументов:

<?php
$args = array(
  // массив нужных категорий:
  'category__and' => array(
    '7',
    '8',
    '9'
  )
);
?>

Обратите внимание на следующие моменты: здесь используется массив, а не строка; в названии параметра два символа подчеркивания (штрих снизу, андерскор), а не один.

 

Параметр category__in аргументов запроса по категории

Этот параметр используется для поиска публикаций в одной или нескольких из массива категорий. Так же принимает идентификатор категории в качестве значения:

<?php
$args = array(
  // для получения публикаций в одной или нескольких категориях:
  'category__in' => array(
   '7',
   '8',
   '9'
  )
);
?>

 

Параметр category__not_in аргументов запроса по категории

Если нужны категории, кроме указанных, тогда для вас есть параметр category__not_in — он именно так и работает:

<?php
$args = array(
  // чтобы исключить публикации из одной категории:
  'category__not_in' => '11' // ID одной категории для исключения
  // чтобы исключить публикации из массива (нескольких) категорий:
  // 'category__not_in' => array( '7', '9' )
);
?>

 

Параметры аргументов запроса для получения публикаций по тегам

Параметры тегов схожи, но несколько отличаются от параметров категорий:

  • использование слага тега: tag (string)
  • использование идентификатора тега: tag_id (int)
  • использование массива «вхождения» идентификаторов тегов: tag__and (array)
  • использование массива «вхождения» идентификаторов тегов: tag__in (array)
  • использование массива «исключающих» идентификаторов тегов: tag__not_in (array)
  • использование «совокупного» массива слагов тегов: tag_slug__and (array)
  • использование массива «вхождения» слагов тегов: tag_slug__in (array)

 

Теперь уделим внимание каждому из них.

 

Параметры tag аргументов запроса по тегу

Параметр tag принимает значение слага тега (! не название) и ему можно передать одно или несколько значений в строке:

<?php
$args = array(
  // чтобы найти публикации только по одному тегу:
  'tag' => 'moy-tag' // слаг одного тега
  // найти публикации по нескольким тегам:
  // 'tag' => 'moy-tag, second-tag, drugoy-tag' // перечислены все желаемые теги (их слаги)
);
?>

 

Параметры tag_id аргументов запроса по тегу

Параметр tag_id принимает идентификатор тега (по аналогии с cat) и может работать с одним или несколькими ID тегов:

<?php
$args = array(
  // чтобы найти публикации по одному тегу:
  'tag_id' => '14' // ID одного тега
  // чтобы найти публикации по нескольким ID тегов:
  // 'tag_id' => '14, 17, 18' // перечислены все желаемые тэги (их ID) для выборки
  // если нужно исключить теги:
  // 'tag_id' => '14, -17, 18' // здесь тег с ID 17 исключен из выборки
);
?>

 

Параметры tag__in аргументов запроса по тегу

Этот параметр позволяет находить публикации с одним или несколькими массивами тегов:

<?php
$args = array(
  // чтобы найти публикации по массиву ID тегов:
  'tag_in' => array(
    '14',
    '15',
    '19'
  )
);
?>

 

Параметры tag__not_in аргументов запроса по тегу

Параметр tag__not_in позволяет извлекать из базы данных публикации, не имеющие заданного тега или массива тегов:

<?php
$args = array(
  // нужно использовать массив, даже если здесь только один тег
  'tag__not_in' => array( '18' ) // ID тега для исключения
  // чтобы получить публикации, не принадлежащие нескольким тэгам:
  // 'tag__not_in' => array( '14', '17', '25' ) // массив идентификаторов тегов
);
?>

 

Параметры tag_slug__and и tag_slug__in аргументов запроса по тегу

Эти два параметра ведут себя точно так же, как и параметры tag__and и tag__in, за исключением того, что здесь используется слаг тега вместо его идентификатора:

<?php
$args = array(
  // чтобы найти публикации по любому слагу из массива тегов:
  'tag_slug__in' => array(
    'moy-tag',
    'second-tag',
    'drugoy-tag'
  )
  // чтобы найти публикации, имеющие все перечисленные слаги тегов:
  // 'tag_slug__and' => array( 'moy-tag', 'second-tag', 'drugoy-tag' ) // перечислены все желаемые теги (их слаги)
);
?>

 

 

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

 

Recent Posts

Использование запросов WP_Query в WordPress – часть 6 (аргументы для получения постов, страниц)

Сегодняшний урок практический и служит целью закрепить полученные теоретические знания из предыдущих уроков по запросу…

2 дня ago

Использование запросов WP_Query в WordPress – часть 5 (методы и свойства)

Продолжаем серию уроков по работе с запросами в базу данных WP_Query в ВордПресс. Сегодняшний урок…

5 дней ago

Использование запросов WP_Query в WordPress — часть 4 (хуки и фильтры)

Этим уроком мы продолжаем серию уроков по работе с запросами в базу данных WP_Query в…

6 дней ago

Прокси: основы, виды и преимущества использования

В современном цифровом мире вопрос безопасности, анонимности и быстрого доступа к интернет-ресурсам становится все более…

1 неделя ago

Джеки Чан

Твоя ужасная работа — мечта каждого безработного. Твой непослушный ребенок — мечта каждого бездетного. Твой…

2 недели ago

Использование запросов WP_Query в WordPress — часть 3 (основные функции класса)

Этот урок является продолжением серии о работе с запросами в базу данных WP_Query в ВордПресс.…

2 недели ago