Home News

Query_posts() - функция WordPress, модификация основного цикла

02.09.2018

видео query_posts() - функция WordPress, модификация основного цикла

WordPress Custom Query - Part 01 - Basics

Когда я писал про циклы , я говорил, что если хотите как-то «по-особому» вывести записи, например в случайном порядке, используйте query_posts().



Итак, query_posts() видоизменяет основной цикл WordPress, то есть, если раньше на главной показывались последние 10 записей с блога, то теперь там может показываться что угодно и сколько угодно.

$query (строка|массив) все параметры такие же, как и у WP_Query()

Обычные примеры

Этот код выведет заголовки всех записей из рубрики с id=22:


Modificando o Loop WordPress com query_posts e WP_Query

query_posts ( "cat=22" ) ; while ( have_posts ( ) ) : the_post ( ); echo '<p>' ; the_title ( ); echo '</p>' ; endwhile ; wp_reset_query ( );

Как и в случае с wp_list_categories() , параметры можно указывать в скобках, а можно выносить в отдельную переменную-массив (кстати, советую использовать именно двойные кавычки, как в примере).


WordPress Custom Loop WP_Query Tutorial

Выводим записи из всех рубрик кроме id=1 и id=4:

query_posts ( "cat=-1,-4" ) ;

Выводим записи, опубликованные в текущем месяце.

$curr_year = date ( 'Y' ) ; // текущий год $curr_month = date ( 'm' ) ; // текущий месяц query_posts ( "year= $curr_year &monthnum= $curr_month " );

Записи из рубрики с id=2, опубликованные в текущем месяце и отсортированные по заголовкам (в алфавитном порядке) по возрастанию:

$args = array ( 'cat' => 2 , 'year' => $curr_year , 'monthnum' => $curr_month , 'orderby' => 'title' , 'order' => 'ASC' ) ; query_posts ( $args ) ;

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

Честно говоря, все предыдущие примеры вообще как-то не в тему к этой функции, они больше подходят к использованию через WP_Query() . Ну да ладно, прост пост я писал давно, а сейчас жалко все это удалять. Короче я покажу, для чего на самом деле нужна функция query_posts().

Сортируем посты на странице по имени:

global $query_string ; // глобальные параметры в виде строки query_posts ( $query_string . '&orderby=name' ) ; // делаем сортировку постов по имени, объединив параметры

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

global $wp_query ; // глобальные параметры, которые уже стоят по умолчанию на странице $args = array_merge ( $wp_query -> query_vars , array ( 'orderby' => 'name' ) ) ; // добавляем к ним сортировку по имени query_posts ( $args ) ;

Вы наверное понимаете, что таким образом можно вытворять всё, что угодно, например сортировать товары по цене (и по возрастанию и по убыванию).

P.S. в самой документации WordPress не рекомендуется использовать несколько query_posts() на странице, они говорят, что это приводит к багам, хотя лично я ничего такого не замечал.

rss