На странице архива WordPress я пытаюсь показать архивы по годам и месяцам по горизонтали, например this . Мне удалось отобразить годы по горизонтали, но по некоторым причинам месяцы не отображаются так, как задумано. Проблема в том, что все месяцы всех лет отображаются и накладываются друг на друга, как на рисунке ниже.
То, что я намерен достичь, - это показывать только месяцы для выбранного года, и если щелкнуть любой другой год, должны появиться его соответствующие месяцы.
Так вот мой код ниже. Пожалуйста, посмотрите и скажите мне, чего не хватает:
<?php
global $wpdb;
$limit = 0;
$year_prev = null;
$months = $wpdb->get_results("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year, COUNT(id) AS post_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_date <= NOW() AND post_type = 'post' GROUP BY month, year ORDER BY post_date DESC");
echo "<ul>";
foreach($months as $month)
{
$year_current = $month->year;
if($year_current != $year_prev)
{
if($year_current != date('Y'))
{
?>
</ul>
<?php
}
?>
<li>
<!-- years -->
<a href="<?php bloginfo('url'); ?>/blog/<?php echo $month->year; ?>/"><?php echo $month->year; ?></a>
<!-- months -->
<ul class="archive-list" style="display:block;">
<?php
}
?>
<li>
<a href="<?php bloginfo('url'); ?>/blog/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)); ?>">
<?php echo date_i18n("M", mktime(0, 0, 0, $month->month, 1, $month->year)); ?>
</a>
</li>
<?php
$year_prev = $year_current;
}
?>
</ul>
</li>
</ul>