По традиции, в рамках данной статьи мы решим одну, на первый взгляд нестандартную, задачу — изменим порядок сортировки записей и выведем в топ именно популярные статьи, собравшие больше всего комментариев.

Зачем это нужно? Например, при разработке каких-либо новостных информеров, где подобный подход будет наиболее актуален и близок к идеологии проекта.

Выводим популярные записи за определенное время (по комментариям)

В выводе популярных постов нам поможет функция «query_posts», а реализовывать её мы будем следующим образом:

<ul><?php
$time = "&monthnum=".date("m"); // За месяц
$sort = "DESC"; // Порядок сортировки
$numb = "5"; // Количество записей для вывода
query_posts("post_type=post&posts_per_page=".$numb."&orderby=comment_count&order=".$sort."&year=".date("Y").$time);
while (have_posts()): the_post();
?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
wp_reset_query();
?>
</ul>

Код следует вставить в нужное место используемой на сайте темы, а основные его моменты мы, конечно, сейчас разберем.

  • $numb — это значение регулирует количество статей
  • $sort — предполагает сортировку. В данном случае она происходит от большего к меньшему (в целом «популярность» определяют не только комментарии, но и просмотры)
  • $time — отрезок времени, за который будет выполнен вывод информации.

В примере выше указан месяц, а чтобы выставить неделю, замените строчку на:

$time = "&w=".date("W"); // За неделю

Так выглядит код с отображением за год:

$time = ""; // За год

Также возможно вывести посты за день:

$time = "&monthnum=".date("m")."&day=".date("j"); // За день

И даже час:

$time = "&monthnum=".date("m")."&day=".date("j")."&hour=".date("H"); // За час

Существуют и периоды поменьше, но смысла в них, как нам кажется, никакого нет.

Как вывести записи по количеству просмотров?

Для начала, следует добавить счетчик количества просмотров записи в WordPress, а затем воспользоваться следующей конструкцией (аналогично с предыдущим вариантом):

<ul>
<?php
$time = "&monthnum=".date("m"); // За месяц
$numb = "5"; // Количество записей для вывода
query_posts("post_type=post&posts_per_page=".$numb."&meta_key=post_views_count&orderby=meta_value_num&year=".date("Y").$time);
while (have_posts()): the_post();
?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
wp_reset_query();
?>
</ul>

Как видим, здесь нет порядка сортировки, а все остальные параметры идентичны с процессом вывода популярных записей по комментариям.