июня 6, 2010 | by Макс | Бывает, человеку очень хочется, чтобы на первой странице его блога выводились посты только из одной категории – например, “Новости”. Человек этот не особо заморачивался с темой блога, в папке темы у него не лежит ни single. php, ни category. php – все формируется по единому шаблону. Но вот для первой страницы человек решил сделать исключение. Итак, первое, что ему надо сделать, добавить папку с темой файл home. php. Затем скопировать туда содержимое из файла index. php. Затем найти строчки, где начинается The Loop: и перед ними добавить query_posts(‘cat=1′); // здесь вместо цифры 1 надо подставить id нужной категории ?> Вот теперь первая страница блога формируется в соответствии с шаблоном home. php, а все остальные в соответствии с index. php. Только, вот беда, плохо работают ссылки на предыдущие страницы – то есть, если захотеть отмотать новости назад, ничего не выйдет. Поступим здесь точно так же, как я уже писал однажды на похожую тему: вместо query_posts(”cat=1″) напишем примерно такое if($paged>1) $offset=$numpost*($paged-1); else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница query_posts(’cat=1&offset=’.$offset.’&showposts=’.$numpost); ?> Теперь должно работать (в старых версиях ВП вместо параметра showposts использовался posts_per_page). Если количеством записей необходимо управлять из админки (Настройки – Чтение). В примере выше количество выводимых записей ограничено в самом коде: $numpost=10, или плагин wp-pagenavi отказывается работать как положено, то может помочь следующий код: Если вышеописанное не помогает и при использовании в шаблоне query_posts перестает работать постраничная навигация – при переходе на следующую страницу отображается тот же самый контент. Проблема решается путем добавлению к циклу всего 2-х строк кода. Необходимо найти код начала цикла: и вставить перед ним следующий код: $page = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; query_posts(“paged=$page”); ?> Ну и, естественно, если необходимо, в query_posts можно добавить дополнительные параметры, например, количество постов в этом цикле или рубрику, из которой из выбирать. Еще немного подробностей о query_posts()
- если нужно подкорректировать всего один параметр (к примеру, мы хотим на странице автора выводить другое, чем обычно, количество постов), то к этому параметру надо прибавлять переменную $query_string, которая позволит не “забыть” про все остальное. Выглядеть это должно примерно так: $query_posts($query_string.”&showposts=5″); если надо вывести все категории, кроме одной, пишем query_posts(”cat=-3″); если надо вывести все категории, кроме нескольких, пишем query_posts(”cat=-1,-2,-3″); если вместо постов надо вывести содержимое страницы, пишем query_posts(’page_id=7′); или query_posts(’pagename=about’); если нам нужен какой-то конкретный пост, пишем query_posts(’p=1′); или query_posts(”name=first-post”); если нам нужны записи за конкретный год и месяц, пишем query_posts(’monthnum=12&year=2004′);
h++p://blog. trampampam. ru/wordpress/query_posts/ h++p://www. sonika. ru/blog/wordpress/query-posts-navigation. htm h++p://wphacks. name/pagination-on-query-posts/ Теги: функции WordPress