query_posts - исправляем работу постраничной навигации

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

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

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

$paged = (get_query_var('paged')) ? get_query_var('paged') : 

query_posts('posts_per_page=3&cat=-5&paged=' . $paged); 

Как можно увидеть, в данном примере мы выводим 3 записи на странице и исключаем рубрику с идентификатором (ID) 5.

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

if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }

query_posts('posts_per_page=3&cat=-5&paged=' . $paged); 

Также как и в предыдущем примере мы исключили рубрику с идентификатором 5 и вывели три записи на странице.

Оба варианта проверены лично мной. Проблем с постраничной навигацией не обнаружено.

Блог WordPress плагины и хаки query_posts - исправляем работу постраничной навигации