wp()
Устанавливает основной запрос (среду WordPress).
Что именно делает wp()?
-
устанавливает или переопределяет глобальные переменные: $wp_query, $wp_the_query;
-
устанавливает header заголовок (в том числе "ошибка 404");
-
создает запрос в базу данных, на основе переданных аргументов (параметр $query_vars), результатами запроса заполняет глобальные переменные;
-
устанавливает глобальные переменные, такие как: $query_string, $posts, $post, $request, $more и $single (для is_singular()), $authordata (для is_author()) и все переменные $wp_query:
Функция работает на основе класса WP{}
Для лучшего понимания, как работает эта функция прочитайте описание хука request
wp() можно использовать, чтобы полностью переписать основной запрос WordPress. Т.е. вызов функции с параметрами изменит множество глобальных переменных и $wp_query в том числе, а значит измениться основной цикл вывода.
Не рекомендую использовать функцию, если вы не уверены в том что делаете. Для изменения основного цикла есть query_posts(), после которого можно вернутся к оригинальному запросу, почистив изменения функцией wp_reset_query(). В случае с wp() сделать это уже не получится.
В конце работы функции срабатывает хук-событие wp.
Хуков нет.
Возвращает
null
. Ничего не возвращает.
Использование
wp( $query_vars );
- $query_vars(строка/массив)
- Параметры запроса. Принимает все те же параметры что и WP_Query.
По умолчанию: Параметры по умолчанию
Примеры
#1 Демонстрация работы
Предположим, что у нас есть постоянная страница. В самом начале кода страницы вызовем функцию так:
<?php wp('author=1&orderby=title&order=ASC'); ?>
Далее идет стандартный вывод цикла.
В результате в цикле будут выведены посты автора с ID = 1, отсортированные по заголовку записи.
Также на этой странице будет срабатывать условный тег is_author(), а не is_single().
Заметки
- Global. WP. $wp Current WordPress environment instance.
- Global. WP_Query. $wp_query WordPress Query object.
- Global. WP_Query. $wp_the_query Copy of the WordPress Query object.
Список изменений
С версии 2.0.0 | Введена. |
Код wp() wp WP 6.7.1
function wp( $query_vars = '' ) { global $wp, $wp_query, $wp_the_query; $wp->main( $query_vars ); if ( ! isset( $wp_the_query ) ) { $wp_the_query = $wp_query; } }