Домой / HELP / WP_Query(), описание класса, параметры

WP_Query(), описание класса, параметры

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

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

Циклов на странице может находиться сколько угодно.

Это было небольшое вступление для тех, кто не в курсе.

Использование

В обоих следующих примерах выводятся ссылки на 5 самых комментируемых записей на блоге:

В этом примере мы не трогаем глобальную переменную $post, а также задаем параметры класса в виде строки:

Дальше пойдет описание параметров, ещё есть отдельный пост про

Параметры класса WP_Query (а также функций query_posts и get_posts)

Авторство

author
(целое число) id автора.

author_name
(строка) «user_nicename» автора, обычно совпадает с логином.

Можно вывести посты сразу нескольких авторов:

Рубрики

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

category_name

(строка) ярлык категории (записи из подкатегорий тоже будут учитываться).

category__and

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

category__in

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

category__not_in
(массив) исключить записи, содержащиеся в одной из перечисленных категорий.

Метки

tag
(строка) ярлык тега (метки). Можно указать несколько значений через запятую.

Если нужно, чтобы пост содержал каждую из меток, то их надо разделить знаком «+»

tag_id

(целое число) id метки.

tag__and
(массив) отобразить записи, содержащие каждую из этих меток.

tag__in
(массив) отобразить записи, содержащие хотя бы одну из перечисленных меток (нужно указать их id).

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

tag_slug__and
(массив) аналогично tag__and, но только вместо id меток надо указать их ярлыки.

tag_slug__in
(массив) аналогично tag__in, но только вместо id меток надо указать ярлыки.

Таксономии

tax_query (доступна с версии 3.1)
(массив массивов) состоит из:

  • taxonomy (строка) — название таксономии,
  • field (строка) — производить выбор по «id» или «slug»,
  • terms (целое|строка|массив) — ID(ы) или ярлык(и) таксономии, в зависимости от предыдущего параметра,
  • include_children (логическое) — нужно ли включить вложенные таксономии (по умолчанию — true),
  • operator (строка) — описывает логическое взаимодействие между элементами массива в параметре terms, возможные значения:
    • IN — принадлежит хотя бы одной рубрике (по умолчанию),
    • AND — принадлежит каждой рубрике,
    • NOT IN — не принадлежит ни одной из указанных рубрик;

relation
(строка) описывает логическое взаимодействие между массивами, содержащимися в tax_query, параметры такие же, как и у operator.

Простой пример — будут выведены все статьи из категории GTA Vice City:

Тот же самый пример с использованием tax_query:

Дальше идут примеры с использованием нескольких таксономий — в данном случае «game» и «platform».

Простой вариант — выводим посты про GTA Vice City для платформы PC:

Теперь читайте внимательно — выводим посты про GTA III, а также посты про GTA Vice City, при этом исключая платформы с указанными ID:

Возможно в этом не сразу удастся разобраться, но на самом деле всё очень просто.

Записи

p
(целое число) ID записи.

name
(строка) ярлык записи.

page_id
(целое число) ID страницы.

Следующие два примера эквивалентны друг другу:

pagename
(строка) ярлык страницы.

post_parent
(целое число) вывести все страницы, для которых родительской является страница с указанным id.

Также вложенные страницы можно отобразить при помощи ярлыков, сначала указываете ярлык родительской страницы, потом «/», а потом ярлык вложенной страницы.

post__in
(массив) какие записи следует включить в цикл.

post__not_in
(массив) какие записи не следует включать.

Прилепленные записи

Если вам нужно, чтобы какой-то пост (или посты) выводился перед всеми остальными записями, на странице его редактирования вы можете отметить следующую опцию:

ignore_sticky_posts
(логическое) игнорировать приоритет прилепленных постов, по умолчанию — 0 (доступен с версии 3.1).

А теперь выведем все посты, которые были отмечены, как прилепленные. В этом случае, конечно же, можно отключить (а можно и не отключать) их повышенный приоритет перед другими постами:

Типы постов

post_type
(строка|массив) тип поста.

  • post — записи, посты (по умолчанию),
  • page — страницы,
  • attachment — вложения, файлы
  • revision — редакции (не черновики),
  • any — все, кроме редакций и постов с параметром exclude_from_search=true,
  • созданный вами тип поста, например game;

Выводим все записи и страницы на блоге, количество выведенных элементов будет зависеть от настроек в админке:

Выводим «книги»:

Статусы постов

post_status
(строка) статус записи.

  • publish — опубликованный пост или страница (по умолчанию),
  • pending — ожидает модерации,
  • draft — черновик,
  • auto-draft — только что созданный пост, без контента,
  • future — пост, который запланирован на публикацию в будущем,
  • private — невидимый для незарегистрированных пользователей,
  • inherit — необходимо указывать при выводе редакций или вложений (либо any),
  • trash — то, что находится в корзине (начиная с версии 2.9),
  • any — все, кроме постов с параметром exclude_from_search=true;

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

Форматы записей

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

Параметры постраничной навигации и количества

posts_per_page (доступен с версии 2.1)
(целое число) количество записей, отображаемых на одной странице;

Отобразить сразу все записи:

nopaging
(логическое) запретить постраничную навигацию.

  • false — нет (по умолчанию)
  • true — да

paged
(целое число) отобразить записи, находящиеся на определенной странице,

offset
(целое число) количество записей, которые нужно пропустить. Если вы указываете значение для offset, то параметр paged будет проигнорирован!

Параметры сортировки

orderby
(строка) сортировать по:

  • none — не сортировать,
  • ID — по id,
  • author — по имени автора,
  • title — по заголовку,
  • date — по дате публикации (по умолчанию),
  • modified — по дате последнего изменения,
  • parent — по id родительских страниц,
  • rand — случайным образом,
  • comment_count — по количеству комментариев (начиная с версии 2.9),
  • menu_order — сортировать по указанному порядку, по умолчанию в WordPress уже есть инструменты для установки собственного порядка страниц и вложений:

 

  • meta_value — по значению мета-данных поста (произвольного поля), при этом в цикле должен присутствовать параметр meta_key; используется только для сортировки строковых значений,
  • meta_value_num — по значению произвольного поля, для сортировки чисел,
  • post__in — использовать порядок, заданный в параметре post__in (с версии 3.5);

order
(строка) порядок сортировки.

  • ASC — по возрастанию (1, 2, 3; a, b, c),
  • DESC — по убыванию (3, 2, 1; c, b, a) (по умолчанию);

Дата и время

year
(целое число) год публикации,

monthnum
(целое число) месяц публикации (от 1 до 12),

w
(целое число) неделя публикации (от 0 до 53),

day
(целое число) день публикации (от 1 до 31),

hour
(целое число) час (от 0 до 23),

minute
(целое число) минута (от 0 до 60),

second
(целое число) секунда (от 0 до 60);

Все посты, опубликованные 20 декабря 2011:

Читайте более подробно о том, как вывести посты, опубликованные между двумя датами.

В WP 3.7 появился также очень удобный date_query.

Произвольные поля

meta_key
(строка) название произвольного поля,

meta_value
(строка) значение произвольного поля,

meta_value_num
(число) значение произвольного поля,

meta_compare
(строка) оператор сопоставления значений произвольного поля, может принимать значения: ‘!=’, ‘>’, ‘>=’, ‘<‘ или ‘<=’. По умолчанию ‘=’;

Отобразить все записи, в которых значение произвольного поля color равно blue.

Отобразить записи, в которых значение любого произвольного поля равно blue.

А в этом варианте выводятся посты, у которых значение произвольного поля color не равно red.

Начиная с версии WordPress 3.1 параметры произвольных полей можно задавать через массив meta_query.

meta_query
(массив массивов) состоит из:

  • key (строка) — название произвольного поля,
  • value (строка|массив) — значение произвольного поля (параметр может быть опущен, если для сравнения используются операторы ‘EXISTS’ или ‘NOT EXISTS’ — доступны, начиная с 3.5 )
  • compare (строка) — оператор сопоставления, возможные значения: ‘=’ (по умолчанию), ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘LIKE’, ‘NOT LIKE’, ‘IN’, ‘NOT IN’, ‘BETWEEN’, ‘NOT BETWEEN’, ‘EXISTS’ и ‘NOT EXISTS’,
  • type (строка) — тип данных значения произвольного поля, например ‘NUMERIC’, ‘BINARY’, ‘CHAR’ (по умолчанию), ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’.

relation
(строка) описывает логическое взаимодействие между массивами, содержащимися в meta_query.

В этом примере выводим анкеты людей, которые разбираются в WordPress или DLE, и им от 18 до 25 лет.

По meta_query конечно можно ещё кучу примеров написать, если у вас есть вопросы или что-то не работает — спрашивайте в комментариях, отвечу всем.

Другие параметры

fields
(строка) в каком виде выводить результат:

  • ids — массив составленный из ID элементов (постов), кстати посмотреть на вид самих массивов вы можете через функцию print_r() или заглянув в пост про get_terms(),
  • id=>parent — ассоциативный массив состоящих из ID элементов и ID их родителей, при этом, если родительского элемента не существует, то возвращается 0, пример:
    по умолчанию выводится массив объектов постов;

s
(строка) поиск постов по указанному ключевому слову, например:

Полная статья здесь тыць автор  Миша Рудрастых

 

Про Александр

Здравствуйте, меня зовут Александр Мороз. Профессионально занимаюсь созданием сайтов . Выражаюсь на диалектах PHP, SQL, JavaScript, HTML, CSS, XML, jQuery. Иногда и матом в особо сложных случаях :)

Проверьте также

Сортировка по поступлению на страницах товаров Opencart

Как добавить «сортировка по поступлению» на страницах товаров и вообще где правиться это выпадающее меню …

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *