Этот практический урок будет посвящен рассмотрению аргументов, которые можно использовать для получения публикаций определенных категорий и тегов с помощью запроса 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
. Следующий практический урок серии будет посвящен рассмотрению параметров таксономий аргументов запроса в ВордПрессе.
Сегодняшний урок практический и служит целью закрепить полученные теоретические знания из предыдущих уроков по запросу…
Продолжаем серию уроков по работе с запросами в базу данных WP_Query в ВордПресс. Сегодняшний урок…
Этим уроком мы продолжаем серию уроков по работе с запросами в базу данных WP_Query в…
В современном цифровом мире вопрос безопасности, анонимности и быстрого доступа к интернет-ресурсам становится все более…
Этот урок является продолжением серии о работе с запросами в базу данных WP_Query в ВордПресс.…