Сышышь ты, выходи сюда,
поговорим!

Дневник самоучки

Опубликовано: 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');

Все это, и даже еще больше, можно было узнать и из Кодекса .

Насколько этот текст оказался полезным?
rss