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

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

Вот они:

  • Параметры автора
  • Параметры поиска
  • Параметры пароля
  • Параметры доступа
  • Параметры кэширования
  • Параметры возвращаемых данных

Параметры автора

Для поиска записей по автору можно использовать четыре параметра:

  • author (число): использовать ID автора.
  • author_name (строка): указывать значение поля user_nicename (НЕ имя).
  • author_in (массив): использовать ID автора.
  • author_not_in (массив).

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


$args = array(

'author' => '2'

);

Здесь мы ищем записи по ID автора со значением 2.

Для поиска записей по одному или нескольким авторам можно использовать строку:


$args = array(

'author' => '1, 2'

);

Если вам удобнее искать данные по имени автора, тогда используйте параметр author_name :


$args = array(

'author_name' =>'rachelmccollin'

);

Этот параметр использует значение поля user_nicename в качестве аргумента. Это значение задается в соответствующем поле в разделе админ-панели «Пользователи»

Поскольку это значение может редактироваться пользователями, безопаснее все-таки использовать параметр author.

Запрашивать записи можно и с помощью массива авторов:


$args = array(

'author__in' =>array(

'1',

'2'

)

);

Здесь мы выводим записи двух авторов, с идентификаторами 1 и 2. Результат мы получаем идентичный тому, который мы получили при использовании строки и параметра author в примере выше.

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


$args = array(

'author__not_in' => array( '1' )

);


А здесь мы исключаем нескольких авторов:


$args = array(

'author__not_in' => array(

'1',

'2'

)

);

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


$args = array(

'author' => '-2'

);

Параметр поиска

Для поиска можно использовать лишь один параметр – s. В этом случае мы ищем записи по поисковой фразе. Например, для того чтобы найти записи с ключевыми словами «моя любимая еда», мы сделаем так:


$args = array(

's' => 'моя любимая еда'

);

Этот параметр полезен для поиска связанных записей с похожими ключевыми словами.

Параметры пароля

Для поиска записей с защитой паролем и без нее можно использовать два параметра:

  • has_password (логический)
  • post_password (строка)

Первый параметр позволяет искать записи с/без защиты паролем:

$args = array(
    'has_password' => true
);

Здесь мы запрашиваем записи, защищенные паролем.

$args = array(
    'has_password' => false
);

А здесь наоборот, выводим записи без пароля.
Второй параметр используется для поиска записей по самому паролю:

$args = array(
    'post_password' => 'mypassword'
);

Параметр доступа

Здесь доступен только один параметр – perm, используемый при поиске записей, для чтения которых у текущего пользователя есть доступ. Принимает значение ‘readable‘ и применяется в сочетании с другими аргументами.
Итак, для поиска записей, защищенных паролем, и их вывода в том случае, если пользователь имеет соответствующий доступ, используйте такой фрагмент:

$args = array(
    'has_password' => true,
    'perm' => 'readable'
);

А такой код можно использовать для вывода черновых записей, если у пользователя есть доступ для их просмотра:

$args = array(
    'post_status' => 'draft',
    'perm' => 'readable'
);

Параметры кэширования

Существует три параметра кэширования, которые предотвращают добавление в кэш полученных в результате запроса данных:
cache_results (логический): кэшировать информацию о записи или нет.
update_post_meta_cache (логический): кэшировать информацию о метаданных записи или нет.
update_post_term_cache (логический): кэшировать информацию о привязке записи к терминам и таксономиям или нет.

По умолчанию все три параметра имеют значение true: их не нужно использовать, если вы хотите добавлять данные в кэш.

Для того чтобы вывести все записи, относящиеся к типу записи product и не добавлять информацию о записи в кэш, используйте следующий код:

$args = array(
    'post_type' => 'product',
    'cache_results' => false
);

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

$args = array(
    'post_type' => 'product',
    'update_post_meta_cache' => false,
    'update_post_term_cache' => false
);

Параметр возвращаемых данных

Для указания возвращаемых в результате запроса полей используется параметр fields. Этот параметр позволяет сохранить возвращаемые данные полей, которые вам не нужны при выводе данных в цикле.
По умолчанию возвращаются все поля. С помощью следующих двух опций это значение можно изменить. Первая – это аргумент ‘ids‘:

$args = array(
    'fields' => 'ids'
);

Здесь мы возвращаем массив идентификаторов записей и никаких других полей. Если вы хотите что-либо вывести в цикле (напр. заголовок записи), тогда придется воспользоваться функцией get_the_title ($post->ID);.
Второй аргумент можно использовать для получения массива идентификаторов записей с идентификаторами дочерних записей в том числе:

$args = array(
    'fields' => 'id=>parent'
);

В этом примере мы выводим записи вместе с дочерними, исходя из заданных нами аргументов.

Заключение

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.