Розбивка постів у WordPress за датою

Під час роботи над одним сайтом виникла потреба виводити усі пости певної групи з розбивкою за роками. Уявіть собі, що є записи про якісь події, скажімо, вечірки, і нам треба відобразити на одній сторінці усі вечірки, що відбулися, з розбивкою за роками. Типу:

2010
– вечірка у Васі
– йога-паті
– день колгоспника

2009
– вечірка у Пєті
– рок-паті

і т.д.

Рішення в інтернеті я не знайшов, тож довелося вмикати мізки 🙂

І ось що вийшло:

$lastyear=2008; // вказуємо нижню границю вибірки
$postsyear=intval(date("Y")); // зчитуємо поточний рік і переводимо в рядкове значення

// виконуємо цикл, доки виконується умова
while ($postsyear > $lastyear) {
$i = 0; // задаємо підрахуйщик постів

// вибираємо усі пости з певними критеріями за конкретний рік
query_posts('cat=1&year='.$postsyear.'&nopaging=true');
if (have_posts()):

// якщо за заданий рік є пости, то перед першим постом виводимо сам рік як фразу
if ($i == 0) {echo "<h2>"; echo $postsyear; echo "</h2>"; }

// починаємо перебирати пости за окремий рік і виводити елементи постів
while (have_posts()) : the_post();
echo "- ";
the_title();
echo "<br />";
$i++;
endwhile;
endif;

// зменшуємо значення року на одиницю
$postsyear--;
 }

На виході отримав:

Відповідно, модифікувавши код, можна робити такі ж операції з іншими елементами дат – місяцями, днями тощо.