- Использование функции «query_posts»
- Обычные примеры
- Примеры с модификацией основного цикла страницы
- Параметры Категорий (рубрик)
- Исключим посты принадлежащие категориям
- Посты из нескольких категорий одновременно
- Посты с одной меткой
- Посты с несколькими метками
- Параметры Таксономий
- #1 Вывод записей из одной таксономии
- #2 Выведем посты прикрепленные к термину bob из таксономии people
- #3 Вывод из нескольких таксономий
- #4 Использование аргумента relation=OR
- #5 Многоуровневый сложный запрос с использование оператора relation=OR
- Использование get_posts()
- Параметры Авторов
- #1 Выведем посты для одного автора
- #2 Выведем посты нескольких авторов сразу
- #3 Исключим посты автора
- #4 Еще пример
- Параметры Записей (постов, страниц)
- Посты/страницы по ID
- Посты/страницы по Слагу
- Дочерние посты/страницы
- Множественные выводы постов/страниц
- Параметры Типов записей
- Посты по типу
- Сортировка по произвольному полю
- Базовые примеры (без meta_query)
- #6 Посты со значением произвольного поля равным 0, не важно какой ключ.
- #2 Записи имеющие одновременно два произвольных поля
- #3 Записи имеющие хотя бы одно поле
- #4 Записи с двумя полями отсортированные по третьему полю
- #5 Получим записи у которые есть произвольное поле
- #6 Вложенные сложные запросы
- #7 Сортировка по произвольному полю
- Получим только картинки любого типа
- Посты по статусам
- Параметры Даты (времени)
- Получим посты за сегодня
- Примеры с параметром date_query
- Получим посты опубликованные год назад, но измененные в последний месяц
- Параметры Отступов
- Параметры Сортировки и порядка
- #1 Сортировка по заголовку
- #2 Выведем один случайный пост
- #6 Множественная сортировка с использованием массива (с версии 4
- #7 Сортировка по ‘meta_value’ для нового типа поста (post_type)
- #1 Посты на странице
- #2 Отступы сверху
- #3 Записи со страницы пагинации 6
- #5 Прилепленные записи (посты)
- Параметры Поиска
- Параметры Доступа
- Параметры Кэширования
- #1 Выведем 50 постов, но не будет добавлять информацию о постах в кэш
- Параметры Возвращаемых данных
- Комбинирование параметров
- Комбинирование с переменными
- Комбинирование массивом
- Записи из категории и с меткой
- #2 Получим только первую часть контента $more = 0
- #4 Вставка переменных в параметры запроса
- #5 Получить конкретный пост/страницу по ID или slug
Использование функции «query_posts»
Рассмотрим запрос, сделанный с помощью этой функции:
С помощью такого кода в глобальную переменную будут записаны публикации из базы данных, которые находятся в рубрике «food» (еда). Далее по коду мы использовали функции цикла WordPress, с помощью которых выводим заголовок и содержание каждой полученной публикации.
Перечислим возможные ключи фильтрации выборки и описания к ним:
Обычные примеры
Этот код выведет заголовки всех записей из рубрики с id=22:
Как и в случае с wp_list_categories(), параметры можно указывать в скобках, а можно выносить в отдельную переменную-массив (кстати, советую использовать именно двойные кавычки, как в примере).
Выводим записи из всех рубрик кроме id=1 и id=4:
Выводим записи, опубликованные в текущем месяце.
= ; // текущий год
= ; // текущий месяц
;
Записи из рубрики с id=2, опубликованные в текущем месяце и отсортированные по заголовкам (в алфавитном порядке) по возрастанию:
Примеры с модификацией основного цикла страницы
Сортируем посты на странице по имени:
; // глобальные параметры в виде строки
. ; // делаем сортировку постов по имени, объединив параметры
Тот же самый пример, но только через массивы:
Вы наверное понимаете, что таким образом можно вытворять всё, что угодно, например сортировать товары по цене (и по возрастанию и по убыванию).
Параметры Категорий (рубрик)
Получает посты относящиеся к определенным категориям.
ID категории. Можно указать несколько ID в строке через запятую или в массиве. Чтобы исключить рубрики укажите минус (-) перед ID категории — это исключит и все вложенные рубрики. Чтобы не исключить вложенные, используйте параметр category__not_in.
Имя категории. Используйте слаг (альтернативное имя), а не само название категории.
Получить посты, которые входят одновременно в несколько категорий.
Получить посты, которые входят в одну из указанных категорий.
Получить посты, которые не входят в указанную категорию.
Этот параметр не учитывает вложенные рубрики. Чтобы исключить рубрику и вложенные рубрики, укажите ID рубрик через запятую со знаком минус в параметре cat: cat=-25,-32.
Исключим посты принадлежащие категориям
Выведем все посты, кроме постов из категорий 12,34,56:
Показать все посты, кроме тех, что принадлежать категории 3:
Посты из нескольких категорий одновременно
Показать посты, которые находятся сразу в двух категориях:
Показать посты, которые находятся хотя бы в одной из категорий (дочерние категории не будут учитываться):
Можно исключить несколько категорий, таким образом:
Получает посты относящиеся к определенным меткам.
Посты одновременно из нескольких меток. Нужно указывать ID.
Посты из хотя бы одной указанной метки. Нужно указывать ID.
Посты не относящиеся к указанным меткам. Нужно указывать ID.
Тоже что и tag__and, только указываются альт. названия (slug) меток.
тоже что и tag__in, только указываются альт. названия меток.
Посты с одной меткой
Получить посты с меткой. Указывать нужно альтернативное название метки (слаг).
Получить посты, имеющие хотя бы одну указанную метку:
Посты с несколькими метками
Получить посты имеющие любую из меток:
Получить посты, имеющие сразу все указанные метки:
Получить посты, имеющие сразу две метки (37 и 47). Этот вариант более предпочтителен вышеприведенному из-за быстродействия.
Получить посты, имеющие хотя бы одно метку 37 или 47. Этот вариант предпочтительнее т.к. указываются сразу ID.
Получить посты, НЕ связанные с метками 37 или 47:
Параметры Таксономий
Выводит посты связанные с определенной таксономией.
С WP 3.1. Нужно указать параметры запроса по таксономии. Может принимать ряд вложенных аргументов, это:
tax_query это массив, элементами которого являются другие массивы, в каждом из которых указывается таксономия, её термины и то как использовать эти термины. Оператор relation указывается в первом массиве tax_query и определяет как сравнивать вложенные массивы между собой. Такая конструкция позволяет создавать запрос одновременно к нескольким таксономиям.
#1 Вывод записей из одной таксономии
Выведем записи из раздела (термина) bob, который является элементом таксономии people:
#2 Выведем посты прикрепленные к термину bob из таксономии people
Сделаем тоже самое что и в примере выше, только с использованием аргумента tax_query:
#3 Вывод из нескольких таксономий
Выведем посты из нескольких произвольных таксономий:
Аналог примера выше. Выведем записи, который одновременно относятся к нескольким произвольным таксономиям через tax_query:
#4 Использование аргумента relation=OR
Выведем посты, которые находятся в рубрике quotes или которые имеют формат quote (форматы введены в версии 3.1). Для этого используем аргумент relation:
#5 Многоуровневый сложный запрос с использование оператора relation=OR
Допустим, нам нужно получить записи одной из групп элементов таксономии.
Например, надо получить автомобили марки ford черного цвета или автомобили марки bmw белого цвета:
В этом примере первый оператор relation=OR влияет на первые дочерние вложенные массивы. А оператор relation=AND во вложенных массивах влияет на массивы вложенных массивов.
Использование get_posts()
Т.е. получим записи типа func, у которых нет ни одного термина из таксономии func_cat. Для этого используем параметр ‘operator=NOT EXISTS’.
Параметры Авторов
Получает посты принадлежащие определенным авторам.
Массив ID авторов, записи которых нужно получить.
Массив ID авторов, записи которых нужно исключить.
#1 Выведем посты для одного автора
Посты по ID автора:
Посты по нику автора:
#2 Выведем посты нескольких авторов сразу
Посты четырех авторов по ID:
#3 Исключим посты автора
Исключим посты автора 12 и покажем все посты, кроме его:
#4 Еще пример
Получим все записи авторов с ID 2 и 6:
Получим записи всех авторов, кроме авторов с ID 2 и 6:
Параметры Записей (постов, страниц)
Получает отдельные страницы или посты.
ID поста который нужно получить (p=27).
post_name (слаг) записи (поста). Пример: name=o-saite.
Заголовок записи (поста). Пример: name=О сайте. С версии 4.4.
ID постоянной страницы, которую нужно получить (page_id=27)
Альт. название постоянной страницы (pagename=o-saite)
Вернет только дочерние страницы.
Выберет посты родители которых указанны в массиве.
Выберет посты родители которых не указанны в массиве.
Укажите через запятую ID постов, которые нужно получить (post__in=5,12,2,14,7).
Выберет все посты кроме указанных.
Выберет указанные посты. Указывать нужно post_name (slug) через запятую или в массиве. С версии 4.4.
Посты/страницы по ID
Выведем пост по ID:
Выведем страницу по ID:
Посты/страницы по Слагу
Выведем пост по Слагу:
Выведем страницу по Слагу:
Дочерние посты/страницы
Выведем дочернюю страницу, используя слаг родительской и дочерней страницы разделенные слэшом: parent_slug/child_slug
Выведем дочерние страницы, используя ID родительской:
Выведем страницы верхнего уровня, исключим все дочерние:
Выведем посты родители которых указаны в массиве:
Множественные выводы постов/страниц
Выведем только указанные посты:
Выведем все посты, кроме указанных:
Заметка: нельзя объединять post__in и post__not_in в одном запросе.
Параметры Типов записей
Показывает посты указанного типа.
Записи какого типа нужно показывать. По умолчанию: post. Но если указан параметр tax_query, то по умолчанию ставиться any.
Посты по типу
Выведем только страницы:
Выведем все посты, кроме ревизий и типов постов у которых при регистрации параметр exclude_from_search выставлен в true:
Выведем 4 типа постов одновременно:
Основным параметром для работы с мета-данными в WP_Query является meta_query, который получает записи (посты) по существующим у них произвольным полям и их значениям. По принципу использования, meta_query похож на tax_query — массив, где каждый элемент в свою очередь является массивом с параметрами запроса, т.е. meta_query — это массив массивов:
Такая конструкция позволяет использовать множественные запросы. Первый параметр relation во «внешнем» массиве описывает логическую связь между запросами. Он может принимать значения AND (используется по умолчанию. Совпадение со всеми запросами) или OR (совпадение с любым из запросов).
Старые переменные запроса мета-данных: meta_key, meta_value, meta_value_num, meta_compare по прежнему поддерживаются и могут быть использованы для простых запросов связанных с произвольными полями.
Список всех параметров связанных с мета-данными:
Ключ(название) произвольного поля.
Значение произвольного поля.
Значение произвольного поля, число.
Массив параметров мета-данных определяющих вывод (этот параметр включает в себя meta_key, meta_value и meta_compare и заменяет их). С версии 3.1.
В массиве можно указать следующие параметры:
Сортировка по произвольному полю
Для сортировки по полю, нужно указать ключ данных поля, и затем в параметре ‘orderby’ указать название этого ключа, например:
Если произвольное поле указывается через параметр meta_key и meta_value, то для сортировки по этому полю в параметре orderby укажите значения: meta_value или meta_value_num (для чисел). См. ниже описание параметра orderby.
Базовые примеры (без meta_query)
При использовании параметра «meta_value» значение 99 будет больше 100, так как эти значения распознаются как строки, а не числа. Для того чтобы числа понимались как числа нужно использовать параметр «meta_value_num»:
#6 Посты со значением произвольного поля равным 0, не важно какой ключ.
Выведем продукты (product) у которых ключ равен color и значение поля не равно blue:
Заметка: для meta_query нужно указывать массив в массиве, даже если вы задаете один запрос.
#2 Записи имеющие одновременно два произвольных поля
Пример вывода постов с несколькими произвольными полями и указанием различных условий для значений этих произвольных полей:
#3 Записи имеющие хотя бы одно поле
Выведем посты с ключом color и значением не (NOT LIKE) blue или (OR) посты с ключом price со значениями поля от 20 до 100:
#4 Записи с двумя полями отсортированные по третьему полю
Предположим у нас есть тип записей toys — игрушки, а в произвольных полях мы указываем материал: твердая мягкая и вес игрушки в граммах: 100 300 500.
Получим мягкие игрушки вес которых от 200 до 500 грамм и отсортируем их по цене по убыванию:
#5 Получим записи у которые есть произвольное поле
Этот пример показывает, как получить записи для которых установлены миниатюры (у которых есть произвольное поле _thumbnail_id):
#6 Вложенные сложные запросы
С версии 4.1 можно создавать вложенные запросы. Например, выполним такое условие: нужно показать продукты оранжевого цвета (color=orange) ИЛИ маленькие (size=small) продукты красного цвета (color=red):
#7 Сортировка по произвольному полю
Выбирает вложения с указанным миме типом. Список миме типов смотрите в описании wp_get_mime_types().
Миме тип записи. Используется только для вложений — записей с типом ‘attachment’.
Этот параметр будет работать только когда параметр post_type = attachment и post_status = inherit. Т.е. миме-тип может быть только у вложений.
Получим только картинки любого типа
Получает посты с указанным статусом.
По умолчанию publish, а если пользователь авторизован добавляется еще и private. Если запрос запущен из админ части, добавляются еще и защищенные типы статусов: future, draft и pending. Все типы статусов:
По умолчанию: ‘publish’
Посты по статусам
Получим только черновики:
Получим посты с разными статусами:
Получим все виды вложений:
Параметры Даты (времени)
Выводит посты принадлежащие определенному периоду времени.
4 цифры года (2013)
Номер месяцы (1 — 12)
Неделя в году (с 0 до 53)
День месяца (1 — 31)
Час (0 — 23)
Минута (0 — 60)
Секунда (0 — 60)
Параметры по которым будет отстроиться запрос. Работает на основе отдельного класса: WP_Date_Query.
Этот параметр указывается как массив, который может содержать вложенные массивы. Параметры: column, compare, relation для основного массива работают как параметры по умолчанию для вложенных массивов (если они есть).
Возможные форматы дат смотрите в документации PHP.
Получим посты за сегодня
Параметр «m» может быть установлен только в списке постов в админ-панели. Он полезен когда вы выбираете из выпадающего списка select где дата установлена как число YYYYmm.
Примеры с параметром date_query
Даты можно указывать цифрами и строками, как видно из этого примера, потому что аргументы before и after обрабатываются функцией PHP strtotime(), а она понимает строки.
Получим посты опубликованные год назад, но измененные в последний месяц
Аргумент date_query работает и с классом WP_Comment_Query, поэтому его точно также можно использовать в функции: get_comments().
Параметры Отступов
Можно установить отступ от первого поста в результатах запроса. Например, стандартно запрос возвращает 6 постов, а если в тот же запрос добавить параметр offset=1, то будут возвращены 5 постов (первый пост из запроса будет пропущен).
Сколько постов из результатов запроса пропустить.
Параметры Сортировки и порядка
Сортирует и устанавливает направление сортировки.
Направление сортировки по параметру orderby, может быть:
orderby = array()
С версии WordPress 4.0 в orderby можно указывать массив сочетающий в себе оба параметра: orderby и order. Сделано это для сортировки по нескольким колонкам одновременною Синтаксис такой:
#1 Сортировка по заголовку
Отсортируем по порядку в меню, а затем по заголовку
#2 Выведем один случайный пост
Выведем посты отсортированные по двум полям: ‘title’ и ‘menu_order’ (title первостепенен):
#6 Множественная сортировка с использованием массива (с версии 4
Получим страницы отсортированные по заголовку (title) и номеру меню (menu_order) в разном порядке (ASC/DESC):
#7 Сортировка по ‘meta_value’ для нового типа поста (post_type)
Выведем посты типа ‘my_custom_post_type’ отсортированные по ключу произвольного поля «age» и отфильтрованные, чтобы показывались только посты со значением поля 3 и 4:
Выключит пагинацию, выведет все посты на одной странице.
Количество постов на одной странице. Если выставить -1, то будут выведены все посты (без пагинации).
Сколько постов пропустить сверху выборки (верхний отступ).
Внимание: Установка этого параметра переписывает/игнорирует параметр «paged» и ломает пагинацию (решение проблемы).
Номер для статической домашней страницы. Показывает записи, которые в обычном режиме должны были быть показаны на странице пагинации Х главной статической странице (front page).
Прилепленные посты не будут показываться в начале списка, но они не исключаются и будут выводиться в обычном порядке.
#1 Посты на странице
Выведем 3 поста на странице:
Выведем все посты на странице:
Выведем все посты и отключим пагинацию:
#2 Отступы сверху
Выведем посты начиная с четвертого (пропустим первые 3):
Выведем 5 постов которые идет за тремя последними:
#3 Записи со страницы пагинации 6
Покажем посты с текущей страницы пагинации. Полезно при построении произвольной пагинации:
Выведем посты с текущей страницы и установим параметр paged в 1, когда переменная не определена на первой странице пагинации:
Вывод текущей страницы пагинации на статической главной странице:
#5 Прилепленные записи (посты)
Исключим все прилепленные посты из запроса:
Исключим прилепленные посты из категории. Вернет все посты рубрики, но прилепленные посты не будут сверху, они будут выводится как обычные посты (по дате):
Исключим прилепленные посты из категории. Вернет все посты рубрики, но прилепленные посты будут полностью исключены. Также добавим сюда правило для правильной пагинации:
Число комментариев для получения на отдельной странице комментариев. По умолчанию опция: comments_per_page.
Количество комментариев, которое должен иметь пост. С версии 4.9.
Параметры Поиска
true — искать по точной фразе указанной в параметре s.
По умолчанию: false
Посты найденные по поисковой фразе.
Параметры Доступа
Показывает посты если пользователь имеет достаточные права.
Выведем опубликованные приватные посты, если у пользователя есть достаточные для просмотра права:
Параметры Кэширования
Не добавляет данные в кэш при выполнении запросов.
Кэшировать ли информацию о посте.
Кэшировать ли информацию о мета данных поста.
Кэшировать ли информацию о привязке поста к терминам и таксономиям.
#1 Выведем 50 постов, но не будет добавлять информацию о постах в кэш
Обычно эти функции использовать не нужно — кэш необходим! Однако, такой подход может пригодится в ряде случаев. Например, если нам нужно получить список заголовков постов и не нужна никакая другая информация о постах: ни о таксономиях ни о мета данных. Не загружая эту информацию мы может сохранить время на ненужных SQL запросах.
Заметка: если используется плагин постоянного кэширования, все эти флаги устанавливаются в false по умолчанию, так как нет необходимости обновлять кэш при каждой загрузке страницы.
Параметры Возвращаемых данных
Устанавливает какие данные должен возвращать запрос.
Какие данные возвращать. По умолчанию возвращаются все.
true — не подсчитывать количество найденных строк. В некоторых случаях может ускорить запрос.
По умолчанию: false
Комбинирование параметров
Вы наверняка заметили, что параметры соединяются между собой символом амперсанд — &, именно этим символом параметры комбинируются (объединяются).
Комбинирование с переменными
Посты из категории 13 за текущий месяц на главной странице блога:
Комбинирование массивом
Вернет только 2 поста, из категории 1 и 3, отсортированные в обратном порядке по заголовку:
Записи из категории и с меткой
Вывести все посты из категории 1, имеющие метку apples:
Чтобы на главной странице блога исключить посты, которые находятся в категории 3, нужно вставить следующий код в файл front-page.php или home.php перед началом Цикла WordPress:
Можно добавить еще несколько категорий к исключению:
#2 Получим только первую часть контента $more = 0
Параметры также можно передать в виде массива. Так они будут более наглядны и читаемы. Например, пример 2 можно записать так:
Как видите тут можно поставить каждую переменную на отдельную строку, а это более понятно и читаемо.
#4 Вставка переменных в параметры запроса
Можно создавать динамические параметры запроса, если нужно, чтобы запрос менялся в зависимости он каких либо обстоятельств, для этого значение параметра нужно записать в переменную, а затем переменную передать в параметры запроса, сделать это можно несколькими способами:
1) Сборка запроса с использованием одинарных кавычек ‘ ‘
Переменные внутри двойных кавычек интерпретируются PHP как переменные, а не как простой текст:
3) Использование глобальной переменной $query_string
Сохранение базового запроса текущей страницы и добавление в него своих параметров
Этот пример по сути тоже самое что и пример с использованием глобальной переменной $query_string, только в виде массива.
#5 Получить конкретный пост/страницу по ID или slug
Получим определенный пост (пост с ID = 5):
Получаем определенную страницу (страницу 7):
Получить отдельную страницу по ее названию (ярлыку):
Получение дочерней страницы.
Для дочерних страниц нужно указывать имя родительской страницы и самой дочерней страницы. Имена разделяются слэшем (/). Пример:
Купить лайки в Одноклассниках с оптовыми скидками и гарантией Вы можете на сайте https://doctorsmm.com/. Здесь Вы найдете разнообразие критериев и условий предоставления услуг. Так, например, Вы самостоятельно сможете выбрать качество материала и скорость его прихода на страницу.
В одной из предыдущих статей «Функции цикла WordPress» мы уже обсудили предназанчения так называемого Цикла WordPress. Цикл хоть и один, но существует три пути его создания:
Эти две функции и один класс принимают один аргумент с одинаковыми параметрами. И возвращают результат в одном и том же формате. Первый цикл запускается на каждой странице самостоятельно WordPress. Последние два являются пользовательскими и могут быть запрограммированы для оформления различных тем. Давайте посмотрим, как работает каждый цикл и как его программируют.