the_title();
вывод на первой странице записей одной категории
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');
Все это, и даже еще больше, можно было узнать и из Кодекса.
Насколько этот текст оказался полезным?
(4.75 out of 5)



апрель 14th, 2007 at 11:31 am
спасибо, очень позновательно
апрель 14th, 2007 at 6:09 pm
За два последних пункта — большое спасибо, не знала про query_posts(’p=1′); и query_posts(’monthnum=12&year=2004′);
Дизайн блога классный!
апрель 15th, 2007 at 11:14 am
пишите еще, понравилось
апрель 17th, 2007 at 3:17 pm
Дизайн и правда классный, но ползёт в Опере 9.02. Некорректно отображается содержимое тега pre - посмотри что с ним, а то несолидно блогеру рассказывающему о блогостроении иметь баги в дизайне.
апрель 17th, 2007 at 3:22 pm
спасибо, проверю!
апрель 20th, 2007 at 3:54 am
Спасибо, информацио о выводе одной категории оказалась очень кстати!
май 6th, 2007 at 7:24 pm
А такой вопрос. Как можно вывести листинг постов одной категории, при входе в эту категорию (например, в сайдбаре)?
май 6th, 2007 at 10:58 pm
чуть раньше я об этом уже писала: http://trampampam.ru/blog/wordpress/neskolko-postingov-tekuschey-kategorii/
май 21st, 2007 at 7:04 pm
Немного не в тему
Есть sidebar темы. Как сделать так чтоб в этом sidebarе отображался один текст для всех категорий страниц и главной но для одной категории (например категории №1) отображался другой текст. Ищу такое на кодексе но никак найти не могу.
май 21st, 2007 at 9:48 pm
Немного не в тему но…
Есть sidebar темы. Как сделать так чтоб в этом sidebarе отображался
один текст для всех категорий страниц и главной но для одной категории
(например категории 1) отображался другой текст. Ищу такое на кодексе
но никак найти не могу.
май 21st, 2007 at 10:59 pm
это называется Сonditional Tags
<?php if(in_category(1)) echo “здесь исключительная категория”;
else echo “здесь текст для всего остального”;
?>
май 28th, 2007 at 4:09 pm
Спасибо! Очень познавательно!
июль 25th, 2007 at 12:21 pm
да респект, мне понравилось
июль 25th, 2007 at 2:46 pm
супер
август 17th, 2007 at 1:49 pm
Яна, привет! я пробую вышеуказанный код (имею траблы с выводом страниц отличных от индекса), но получаю ошибку Parse error: syntax error, unexpected T_ELSE in /home/isynth/public_html/wp-content/themes/dreams/index.php on line 6
что может быть не так??
привожу код index.php ниже:
” target=”_blank” href=”">” />
1) $offset=$numpost*($paged-1); ?>
“>
” rel=”bookmark” title=”">
/images/icon_cat.gif” align=”absmiddle”> Категория: /images/icon_day.gif” align=”absmiddle”> Опубликовано:
/images/icon_more.gif” align=”absmiddle”> “>Далее…
Записи в категории:
Ничего не найдено
По Вашему запросу ничего не найдено
август 17th, 2007 at 2:27 pm
iSynth: чтобы код отобразился нормально попробуйте заключить его в теги <code></code>
сентябрь 18th, 2007 at 4:21 pm
Спасибо! Очень познавательно!
P.S. Что-то у тя двигло глючит
везде функции повылазили
октябрь 12th, 2007 at 4:01 am
>везде функции повылазили
Это ж диз такой
ноябрь 29th, 2007 at 2:17 pm
Интересная информация, спасибо. Но взникла еще одна необходимость. Как на первой странице вывести по одному, или по два, или по три поста с каждой категории?
ноябрь 29th, 2007 at 2:23 pm
Stan - точно так же:
сначала $query_posts(’cat=1&shoposts=3′)
потом луп
потом опять $query_posts уже с другими параметрами, потом опять луп
и так далее
декабрь 10th, 2007 at 11:26 am
Огромное спасибо! С шаблоном home.php как раз то что мне нужно и главное работает))
декабрь 17th, 2007 at 11:07 am
Конструкция:
$numpost=10;//сколько записей на одной странице нам надо вывести
if($paged>1) $offset=$numpost*($paged-1);
else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница
query_posts("cat=3&offset=".$offset."&showposts=".$numpost);
,работает в том случае если в настройках установлен параметр показа 10 постов на странице, если поставить вывод постов меньше или больше 10 то конструкция не работает( надо поправить $numpost=10; на $numpost=?;, где вместо ? - количество постов показываемых на странице из настроек…
ноябрь 26th, 2009 at 9:36 am
Добрый день, подскажите пожалуйста как вывести на странице категории – дополнительно внизу все заголовки постов этой категории в алфавитном порядке в две или три колонки?