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, чтобы и плагин и метод работали, нужно использовать другой код. Смотрите в комментах.

WordPress: вывод на главной постов определённой категории
3.14 Голосов:7
  • Хм. Надо попробовать.

    [Ответить]

    admin

    конечно надо! получилось очень прилично у меня на одном сайтике)

    [Ответить]

  • Вот спасибо тебе, дружище. Это-то я и искал битый час

    [Ответить]

    admin

    🙂 я даже больше искал

    [Ответить]

  • Спасибо. Получилось даже у меня.

    [Ответить]

    admin

    @Константин, рад что работает не только у меня)

    [Ответить]

  • При использовании плагина WP-PageNavi переходы по страницам перестают работать)

    Чтобы исправить надо использовать конструкцию типа

    где переменная $query_string обязательна

    [Ответить]

    snov

    @snov, <?php if (is_home()) { query_posts($query_string.’&cat=1&showposts=3′); } ?>

    вот так

    [Ответить]

    admin

    @snov, спасибо! не тестировал на совместимость с другими плагинами, наверняка и другие конфликты есть! заодно после вашего коммента прикрутил возможность вставки кода, проверю сейчас

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

    [Ответить]

    Артем

    is_home() в последних версиях иногда не срабатывает. Лично у меня на 3.3 не захотел работать. В таком случае я использовал подобную функцию is_front_page()

    [Ответить]

  • Хочу на главной сделать таблицу, и по ячейкам разбить категории, и что бы в ячейках отображались последние записи каждой категории, как мне это сделать? У меня при добавлении этих строк к index.php в строках



    ничего не выходит

    [Ответить]

    admin

    @Seul Voyageur, не помогу, увы, я сам не знаток

    [Ответить]

  • Zalmat

    Спасибо, очень пригодилось 🙂

    [Ответить]

  • Спасибо автору за код) Был полезен при разработке очередного сайта)

    [Ответить]

    admin

    @qstudio.manager, рад помочь 😉

    [Ответить]

  • Лайт

    ЗАРАБОООООТАЛО!!!!!!!!!!!!!!!!!!!!!! ))))))))))

    [Ответить]

  • а с плагином Page Number Themes как правильно сделать

    [Ответить]

  • Люди, помогите, пожалуйста. Я уже не знаю куда спрашивать. Нужен php-код, который будет делать ссылку на следующий пост в ЗАДАННОЙ категории… Еще бы неплохо с проверкой, есть ли следующий пост в этой категории. Собственно, в той-же, в которой и пост, на котором будет стоять этот код… (во завернул 🙂 ) Но известный параметр in_same_cat — не подходит… У категорий есть структура. in_same_cat — отображает ссылки на посты в родительской, а мне нужно в дочерней…

    [Ответить]

    Давид

    @Кинозал,

    «>
    «>

    Встроенные возможности

    [Ответить]

    Давид

    @Давид, «>

    «>

    [Ответить]

  • Спасибо за статью, очень помогла. Только есть одна проблема, закрепленные записи перестали быть закрепленными, т.е. они стали обычными записями и выводятся по порядку.

    [Ответить]

  • Andre

    хм … так просто … а я со всякими плагинами @бался пол дня …автору огромное спасибо … прикручу на свои доры эту фишку )))))

    [Ответить]

  • А как вывести 5 постов с разных категорий, зная только их id?

    [Ответить]

  • Спасибо за дельный совет. Работает. Но загвоздка: вставил этот код в колонку, где хотел бы, чтоб отображались посты нескольких категорий. Первая отображается, последующие — нет. ID категорий проставлены правильно.

    [Ответить]

  • у меня так и не сработало(
    пытаюсь вывести на индекс.пхп все посты целиком без ката, всего в базе 3 штуки… все равно он режет их, добавляя линку «read the rest of this entry…» . уже голову сломал, и полностью перенёс содержимое single.php на индекс, оставив только цикл

    [Ответить]

    snov

    @Roman, Замените из файлов index.php и archive.php метод вывода c the_excerpt() на the_content() и будет щастье)))
    ну и не забудьте в статьях вырезать тэг

    [Ответить]

  • admin, кстати если будешь ставить не strip_tags, а просто менять символы «<" на "&gt" и обратные, то люди смогут видеть код)

    [Ответить]

    admin

    @snov, я так понял это конструктивное замечание) а где это делать?

    [Ответить]

  • Спасибо, чувак! Хоть у меня в index.php всё было чуток не так, но мысль этот пост направил в нужное русло и помог с нужными мне параметрами в query_posts. Кстати на в «Моём мире» на mail.ru не удалось поделиться ссылочкой чё то.

    [Ответить]

  • Zhanna

    Спасибо! очень помогло))) Но на одном сайте у меня статическая страница входа, а записи перенесены на другую страницу и если я вписываю этот код в index.php он не работает (а если записи выводятся на главной, как обычно все работает) Есть выход???

    [Ответить]

  • Скажите пожалуйста, как вывести статическую страницу и сразу после нее ниже одну запись:
    Сделал так, но не работает (выводит только запись):

     

    [Ответить]

  • Евгений
  • Евгений

    почемуто код не добавился, вот еще :

    [Ответить]

  • В закладки! Особенно понадобились дополнительные вещи, которые Вы не проверяли 🙂 Работают.

    [Ответить]

  • А как вывести весь список категорий и постов в них? То есть типа сайтмэпа, только это для менюшки нужно.

    [Ответить]

  • Спасибо большое, я два года назад делал так, а потом обновилась тема, функция слетела и сайт испортился, целый день пытался вспомнить что же я там прописывал, вот это оказывается)

    [Ответить]

  • Кстати, не мешало бы сказать, что для отображения заданного в настройках чтения wordpress «posts_per_page» количества записей на странице, достаточно убрать совсем «showposts=n».

    [Ответить]

  • Timur

    При использовании плагина WP-PageNavi переходы по страницам так и не работают, кроме того, они и не работают без использования плагина. Код использовал

    [Ответить]

  • pagenavi навигация по страницам не работает с этой функцией. Будем искать дальше.

    [Ответить]

  • У меня тоже с плагином pagenavi не идет, при постраничной навигации списки дублируются.

    [Ответить]

  • Добрый день Скажите пожалуйста, а как сделать чтобы на гланой выводилось по одному посту с каждой категории и при этом в превую очередь новые

    [Ответить]

    admin

    не сталкивался, не подскажу

    [Ответить]

    Вит

    @Александр,

    <a href="»> ‘imgvideo’)); } ?>
    ,как то так

    [Ответить]

  • Спасибо. очень сильно помогло 🙂

    [Ответить]

  • Спасибосы!

    [Ответить]

  • Спасибо Вам большое! Помогло

    [Ответить]

  • Спс, все отлично сработало.

    [Ответить]

  • Вит

    Великолепная вещь, очень помогло

    [Ответить]

  • Александр

    Здравствуйте!У меня почему то не хочет работать такая строчка подскажите пожалуйста в чём проблема.

    [Ответить]

  • Александр

    query_posts(‘orderby=rand&showposts=3′)

    [Ответить]

  • в ручную тежеловато все это сделать лучше плагин наверное

    [Ответить]