WordPress: вывод на главной постов определённой категории

вывод на главной постов определённой категорииЗадача:  вывести на главной странице сайта на wordpress  посты только одной (или нескольких? или исключить одну?) категории. Можно использовать плагин, например Advanced Category Excluder

Я не мог использовать плагин по ряду причин.

Например, если вы исключите этим плагином все кроме одной категории, а потом другим плагином поставите в сайдбаре ссылки на нужные посты исключённых категорий то они не появятся, т.к. исключены.


У меня сработал такой метод:
в файле index.php вашей темы оформления ищем
код

<?php if (have_posts()) : ?>

и перед ним добавляем такой код:

<?php if (is_home()) { query_posts($query_string.'&cat=920&showposts=5'); } ?>

где 920 — ID категории, посты из которой вы хотите вывести.

По идее (я не проверял) должны работать и такие конструкции:

query_posts(‘cat=-3’) — Не показывать категорию id которой равно 3;
query_posts(‘cat=-1,-2,-3’) — Не показывать категории, id которых равны 1, 2 и 3;
query_posts(‘cat=2,6,17’) — Вывести категории с id равным 2, 6 и 17;
query_posts(‘category_name=WordPress’) — Вывести категорию с названием “WordPress”;
query_posts(‘name=Hello World’) — Вывести один пост с названием “Hello World”;
query_posts(‘p=5’) — Вывести один пост, id которого равно 5;
query_posts(‘page_id=7’) — Вывести страницу id которой равно 7;
query_posts(‘pagename=about’) — Вывести страницу с названием “about”;
query_posts(‘cat=18&showposts=5’) — Вывести 5 постов из категории с id=18;
query_posts(‘cat=3&orderby=date&order=ASC’) — Вывести посты из категории id которой равно 3, сортировать по дате в хронологическом порядке(DESC — в обратном порядке);
query_posts(‘posts_per_page=10’) — Вывести 10 постов на страницу (при значении -1 выводит все посты);
query_posts(‘cat=3&year=2008’) — Вывести посты из категории с id=3 за 2008 год;
query_posts(‘orderby=rand&showposts=3&cat=3’) — выводин рандомно, т.е. случайно 3 записи из 3 категории;
query_posts(‘orderby=rand&showposts=3’) — выводит случайно 3 записи из всех категорий;
query_posts(‘meta_key=cars&meta_value=volvo’) — выводит список постов с произвольным полем “cars” и значением этого поля volvo.
Информация о примерах использования query_posts взята с сайта http://www.wp-info.ru/

Будьте осторожны, если не до конца уверены в том что делаете 😉

Upd. Спасибо Snov за дополнение о том, что код из примера выше не работает с плагином WP-PageNavi, чтобы и плагин и метод работали, нужно использовать другой код. Смотрите в комментах.

53 комментария

Sibluder 30.12.2010 Ответить
Хм. Надо попробовать.
admin 13.01.2011 Ответить
конечно надо! получилось очень прилично у меня на одном сайтике)
Seventh 06.01.2011 Ответить
Вот спасибо тебе, дружище. Это-то я и искал битый час
admin 13.01.2011 Ответить
🙂 я даже больше искал
Константин 23.01.2011 Ответить
Спасибо. Получилось даже у меня.
admin 23.01.2011 Ответить
@Константин, рад что работает не только у меня)
snov 25.01.2011 Ответить
При использовании плагина WP-PageNavi переходы по страницам перестают работать) Чтобы исправить надо использовать конструкцию типа где переменная $query_string обязательна
snov 25.01.2011 Ответить
@snov, <?php if (is_home()) { query_posts($query_string.’&cat=1&showposts=3′); } ?> вот так
admin 25.01.2011
@snov, спасибо! не тестировал на совместимость с другими плагинами, наверняка и другие конфликты есть! заодно после вашего коммента прикрутил возможность вставки кода, проверю сейчас
<?php if (is_home()) { query_posts($query_string.'&cat=1&showposts=3'); } ?>
Артем 29.12.2012 Ответить
is_home() в последних версиях иногда не срабатывает. Лично у меня на 3.3 не захотел работать. В таком случае я использовал подобную функцию is_front_page()
Seul Voyageur 01.06.2011 Ответить
Хочу на главной сделать таблицу, и по ячейкам разбить категории, и что бы в ячейках отображались последние записи каждой категории, как мне это сделать? У меня при добавлении этих строк к index.php в строках ничего не выходит
admin 09.06.2011 Ответить
@Seul Voyageur, не помогу, увы, я сам не знаток
Zalmat 05.07.2011 Ответить
Спасибо, очень пригодилось 🙂
qstudio.manager 06.07.2011 Ответить
Спасибо автору за код) Был полезен при разработке очередного сайта)
admin 13.09.2011 Ответить
@qstudio.manager, рад помочь 😉
Лайт 10.07.2011 Ответить
ЗАРАБОООООТАЛО!!!!!!!!!!!!!!!!!!!!!! ))))))))))
book 14.08.2011 Ответить
а с плагином Page Number Themes как правильно сделать
Кинозал 28.10.2011 Ответить
Люди, помогите, пожалуйста. Я уже не знаю куда спрашивать. Нужен php-код, который будет делать ссылку на следующий пост в ЗАДАННОЙ категории… Еще бы неплохо с проверкой, есть ли следующий пост в этой категории. Собственно, в той-же, в которой и пост, на котором будет стоять этот код… (во завернул 🙂 ) Но известный параметр in_same_cat — не подходит… У категорий есть структура. in_same_cat — отображает ссылки на посты в родительской, а мне нужно в дочерней…
Давид 22.11.2012 Ответить
@Кинозал,
«> «>
Встроенные возможности
Давид 22.11.2012
@Давид, «> «>
Владимир 04.11.2011 Ответить
Спасибо за статью, очень помогла. Только есть одна проблема, закрепленные записи перестали быть закрепленными, т.е. они стали обычными записями и выводятся по порядку.
Andre 17.12.2011 Ответить
хм … так просто … а я со всякими плагинами @бался пол дня …автору огромное спасибо … прикручу на свои доры эту фишку )))))
Joliat 17.12.2011 Ответить
А как вывести 5 постов с разных категорий, зная только их id?
VERDE Photo Gallery 23.12.2011 Ответить
Спасибо за дельный совет. Работает. Но загвоздка: вставил этот код в колонку, где хотел бы, чтоб отображались посты нескольких категорий. Первая отображается, последующие — нет. ID категорий проставлены правильно.
Roman 08.01.2012 Ответить
у меня так и не сработало( пытаюсь вывести на индекс.пхп все посты целиком без ката, всего в базе 3 штуки… все равно он режет их, добавляя линку «read the rest of this entry…» . уже голову сломал, и полностью перенёс содержимое single.php на индекс, оставив только цикл
snov 15.02.2012 Ответить
@Roman, Замените из файлов index.php и archive.php метод вывода c the_excerpt() на the_content() и будет щастье))) ну и не забудьте в статьях вырезать тэг
snov 15.02.2012 Ответить
admin, кстати если будешь ставить не strip_tags, а просто менять символы «<" на "&gt" и обратные, то люди смогут видеть код)
admin 25.02.2012 Ответить
@snov, я так понял это конструктивное замечание) а где это делать?
Олег 24.02.2012 Ответить
Спасибо, чувак! Хоть у меня в index.php всё было чуток не так, но мысль этот пост направил в нужное русло и помог с нужными мне параметрами в query_posts. Кстати на в «Моём мире» на mail.ru не удалось поделиться ссылочкой чё то.
Zhanna 12.03.2012 Ответить
Спасибо! очень помогло))) Но на одном сайте у меня статическая страница входа, а записи перенесены на другую страницу и если я вписываю этот код в index.php он не работает (а если записи выводятся на главной, как обычно все работает) Есть выход???
Евгений 18.03.2012 Ответить
Скажите пожалуйста, как вывести статическую страницу и сразу после нее ниже одну запись: Сделал так, но не работает (выводит только запись):
 
Евгений 18.03.2012 Ответить
 
Евгений 18.03.2012 Ответить
почемуто код не добавился, вот еще :
Никола 07.04.2012 Ответить
В закладки! Особенно понадобились дополнительные вещи, которые Вы не проверяли 🙂 Работают.
SlaviO 15.04.2012 Ответить
А как вывести весь список категорий и постов в них? То есть типа сайтмэпа, только это для менюшки нужно.
Kemal 16.04.2012 Ответить
Спасибо большое, я два года назад делал так, а потом обновилась тема, функция слетела и сайт испортился, целый день пытался вспомнить что же я там прописывал, вот это оказывается)
Kemal 16.04.2012 Ответить
Кстати, не мешало бы сказать, что для отображения заданного в настройках чтения wordpress «posts_per_page» количества записей на странице, достаточно убрать совсем «showposts=n».
Timur 17.04.2012 Ответить
При использовании плагина WP-PageNavi переходы по страницам так и не работают, кроме того, они и не работают без использования плагина. Код использовал
Александр 07.05.2012 Ответить
pagenavi навигация по страницам не работает с этой функцией. Будем искать дальше.
Максим 22.05.2012 Ответить
У меня тоже с плагином pagenavi не идет, при постраничной навигации списки дублируются.
Александр 18.06.2012 Ответить
Добрый день Скажите пожалуйста, а как сделать чтобы на гланой выводилось по одному посту с каждой категории и при этом в превую очередь новые
admin 27.06.2012 Ответить
не сталкивался, не подскажу
Вит 11.11.2012 Ответить
@Александр, <a href="»> ‘imgvideo’)); } ?> ,как то так
elfochka 12.07.2012 Ответить
Спасибо. очень сильно помогло 🙂
Дмитрий 29.08.2012 Ответить
Спасибо Вам большое! Помогло
Артем 25.09.2012 Ответить
Спс, все отлично сработало.
Вит 11.11.2012 Ответить
Великолепная вещь, очень помогло
Александр 13.11.2012 Ответить
Здравствуйте!У меня почему то не хочет работать такая строчка подскажите пожалуйста в чём проблема.
Александр 13.11.2012 Ответить
query_posts(‘orderby=rand&showposts=3′)
Ильмир 26.12.2012 Ответить
в ручную тежеловато все это сделать лучше плагин наверное
Sergius 29.03.2020 Ответить
Автор красавчик и мудак одновременно! ГДЕ САМ КОД?! цитирую У меня сработал такой метод: в файле index.php вашей темы оформления ищем код и перед ним добавляем такой код: где 920 — ID категории, посты из которой вы хотите вывести. По идее (я не проверял) должны работать и такие конструкции: ну и где, мать черешни за ногу код?! Догадайся мол сама?
cmsuser 29.03.2020 Ответить
Спасибо, что вежливо и тактично указали на техническую неисправность с отображением кода.

Добавить комментарий