Дневник самоучки
Опубликовано: 20.10.2017
the_content();
Бывает, человеку очень хочется, чтобы на первой странице его блога выводились посты только из одной категории - например, "Новости". Человек этот не особо заморачивался с темой блога, в папке темы у него не лежит ни single.php, ни category.php - все формируется по единому шаблону. Но вот для первой страницы человек решил сделать исключение.
Итак, первое, что ему надо сделать, добавить папку с темой файл home.php. Затем скопировать туда содержимое из файла index.php. Затем найти строчки, где начинается The Loop : if ( have_posts ( ) ) : while ( have_posts ( ) ) : the_post ( ); и перед ними добавить query_posts ( "cat=3" ) ;//здесь вместо цифры 3 надо подставить id нужной категории Вот теперь первая страница блога формируется в соответствии с шаблоном home.php, а все остальные в соответствии с index.php. Только, вот беда, плохо работают ссылки на предыдущие страницы - то есть, если захотеть отмотать новости назад, ничего не выйдет. Поступим здесь точно так же, как я уже писала однажды на похожую тему: вместо query_posts("cat=3") напишем примерно такое $numpost =10 ;//сколько записей на одной странице нам надо вывести if ( $paged > 1 ) $offset =$numpost *( $paged -1 ) ; else $offset =0 ;//чтобы знать, с какой статьи начать, если это не первая страница query_posts ( "cat=3&offset=" .$offset ."&showposts=" .$numpost ) ; Теперь должно работать (в старых версиях ВП вместо параметра showposts использовался posts_per_page).Еще немного подробностей о 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');Все это, и даже еще больше, можно было узнать и из Кодекса .
Насколько этот текст оказался полезным?