Июн
11
16

Список последних сообщений выбранной категории

последние статьи блогаЯ тут на днях совершил просто грандиозную авантюру и запустил новый проект про футбольный ЧМ 2010, который сегодня, кстати, двумя матчами и стартует. Точнее как запустил, купил домен, заказал тексты, а потом подумал, что это все была не совсем хорошая идея. Но пути назад, как говорится, уже не было – пришлось в срочном порядке устанавливать wordpress, подключать спортивный плагин LeagueManager и другие модули, шаблоны, занимается множеством правок и добавлений пока я не наконец то не получил более-менее нормальный продукт. И тут, кстати, у меня возникла одна небольшая задачка, которую сейчас предлагаю рассмотреть.

Из-за чемпионата мира в ЮАР целый месяц большая часть мужского населения планеты будет торчать у телевизоров или в барах. Конечно, для них я и создал свой блог дабы можно было не только почитать всякие обзоры пропущенных поединков, но и активно пообсуждать происходящее на футбольных полях.

Так вот на сайте есть 2 «глобальных» категории для постов – новости и «все остальные» (обзоры, дополнительная инфа и т.п.). Задача заключалась в том чтобы вывести несколько последних публикаций (сообщений) по каждому из направлений (категории). Вручную создавать списки ссылок — немного неправильно, хотя и проще, поэтому пришлось искать другое решение.

Начнем издалека. В обычных случаях для вывода подборки последних записей можно использовать одну из вариаций функции архивов wp_get_archives. Если говорить вкратце, то для вывода применяется следующий код:

<ul>
 <?php wp_get_archives('type=postbypost&limit=10&format=html'); ?>
</ul>

Но при этом нет никакой возможности указать категории для постов, которые хотелось бы выводить. В таком случае нужно вспомнить один из недавних постов, где я рассказывал о WP_Query — функции запроса к базе данных. Можете поискать информацию о ней  и параметрах использования на официальном сайте, я лишь приведу пример нужного кода для вывода последних сообщений из выбранной категории:

<ul>
<?php $recent = new WP_Query("cat=1&showposts=10"); while($recent->have_posts()) : $recent->the_post();?>
<li><a href="<?php the_permalink() ?>" >
<?php the_title(); ?>
</a></li>
<?php endwhile; ?>
</ul>

Здесь в запросе WP_Query используется, во-первых, переменная cat, которая указывает номер выбранной категории, а во-вторых, переменная showposts, что задает количество выводимых постов. Точнее мы получаем набор постов в цикле loop, для которых выводим заголовки через функцию the_title().

Обновление 28.06.2018: Если вы не любите копаться в коде, то можно глянуть на модуль Category Posts Widget, добавляющий в систему одноименный видежт. С его помощью допускается создание аналогичных списков по рубрикам.

Если вам не совсем понятны данные рассуждения, не страшно, просто добавляете код в файл сайдбара sidebar.php и смотрите на результат. Кстати, можно еще добавить, что если указать параметр cat=-1, то указанная категория будет исключаться из списка. Таким образом для решения задачи мы создаем 2 блока с запросом WP_Query, в одном из которых выводим блок новостей (категория = 1), а во втором его исключаем. Вот так оказывается все просто!

P.S. Любителей головоломок заинтересуют логические флеш игры на сайте онлайн игр.
Если вам вдруг нужны психологи в Екатеринбурге — вы запросто можете заказать консультацию психолога.

комментариев 16 к статье “Список последних сообщений выбранной категории”

  • Samter   12.06.2010

    Хотелось бы отметить, что все таки WP_Query это не функция, а класс. Простите за назойливость — режет «слух» программисткий такие высказывания )

  • Яков   17.06.2010

    Огромное спасибо! Весь интернет обшарил, чтобы найти и реализовать эту возможность. Перепробовал разные плагины, например news ticker, но он выводит анимировано, что мне не понравилось. Поставил код и заработало, теперь выводятся новости, но есть одно но — если убирать новости с главной, то они не будут выводиться в сайдбаре через этот код, как бы реализовать возможность вывода постов в сайдбаре с категории, которая не транслируется на главной?

  • Наталия   13.11.2010

    Здравствуйте. Отличная вещь, очень полезная!
    Но у меня возникла проблема: почему-то при попытке вставить перед этим заголовок в тегах H2, либо после этого текст в любых тегах p, div, span, li и т.п., текст отображается квадратиками. Т.е. получается, что нормальным шрифтом отображаются только заголовки постов, взятые с помощью функции php, а все тексты введенные вручную не отображются нормально.
    Как это можно решить??

    Буду благодарна за ответ. :)

  • Наталия   13.11.2010

    Спасибо, я уже нашла! У меня почему-то файл sidebar.php был не в кодировке utf8, а в заподноевропейской….

  • Sergey   13.12.2010

    шаблон для WordPress с нуля – урок 4 (выводим список категорий).
    http://all-kompyuters.ru/houm/post/33

  • Дмитрий Лебедь   31.01.2011

    Спасибо, Саша! Полезная статья. Понадобиться для моего блога, хочу запустить новую рубрику «Новости экономики»

  • Tod   31.01.2011

    Дмитрий Лебедь, не за что, для вывода новостей данный хак хорошо подходит)

  • Евгений   04.02.2011

    Важная информаци, попробую применить с своём новом блоге.

  • nemetc   15.02.2011

    как сделать вывод популярных новостей определенной категории только в этой категории?

  • Tod   15.02.2011

    nemetc, можно поставить плагин WP-PostRatings для оценивания постов и там уже в коде делать условные выборки — если категория1, то отображаем популярные посты для нее.

  • andrew87   23.05.2011

    Скажите, а есть смысл делать такие сайты под кратковременный трафик, как ЧМ2010?
    И хотелось бы чтобы комментарии можно было оставлять не вводя каждый раз заново имя, емейл и сайт(если уже комментировал другую статью сегодня). Можно и написать об этом статью.

  • Tod   23.05.2011

    andrew87, если говорить о заработке с трафика, то, конечно, после завершения турнира его объемы ушли полностью, но подобные события позволяют словить много трафика, когда они проходят. А дальше можно использовать проект для заработка на биржах ссылок что, в принципе, тоже неплохо.

  • Oleg   30.06.2011

    в блоке который в примере как отсортировать статьи по дате?

  • Tod   01.07.2011

    Oleg, для сортировке по дате нужно добавить параметры orderby и order в WP_Query, что-то вроде:

    $query = new WP_Query( array ( 'orderby' => 'title', 'order' => 'DESC' ) );

    Это не код, который нужно вставить на сайт, а пример, откуда берем orderby и order.

  • Надежда   19.11.2015

    Здравствуйте. Спс за пост.
    Возникла ошибка на странице при использовании.
    При добавлении вашего кода, после него на странице ничего не показывается (простая строка или блок комментариев).
    Почему такое может быть?

  • Tod   20.11.2015

    Надежда, код в вашем комментарии, к сожалению, неправильно вставился. По поводу вашего вопроса — нужно внимательно посмотреть код файла шаблона, где собираетесь вставить список сообщений. Возможно в том месте, куда добавляете его не закрыт блок PHP ?> и получается нарушение структуры файла.
    Когда появляется какая-то ошибка, я вставляю код частями. Например, сначала добавляю HTML код — смотрю отображает ли корректно, дальше одну какую-то PHP функцию, например echo. И если все это работает — вставляете готовый кусок кода.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости