мой блог WordPress в настоящее время показывает архивы в формате месяц за месяцем. Как это:
Ноябрь 2014
Октябрь 2014
Сентябрь 2014
Август 2014
Июль 2014
Июнь 2014
Май 2014
…..
и так далее
Мне нужно, чтобы он отображался таким образом, чтобы текущий год показывал все месяцы, но за все предыдущие годы он показывает только «Год». Что-то вроде этого:
Ноябрь 2014
Октябрь 2014
Сентябрь 2014
…
…
Февраль 2014 года
Январь 2014
2013
2012
2011
2010
Может кто-нибудь, пожалуйста, наставить меня на это? Текущий код в боковой панели моего блога выглядит так:
<?php /* If this is a category archive */ if ( is_category(0) || in_category(0)) { ?>
<?php ?><ul>
<?php
$querystr = "SELECT YEAR(post_date) AS 'year', MONTH(post_date) AS 'month' , count(ID) as posts FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.term_id != 12 AND $wpdb->term_taxonomy.parent != 12 AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id =8 AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC";
$years = $wpdb->get_results($querystr);
foreach ( (array) $years as $year ) {
$url = get_month_link($year->year, $year->month );
$url = $url.'?cat=8';
$date = mysql2date('F o', $year->year.'-'.$year->month, $translate = true);
echo get_archives_link($url, $date, 'html','<li>','</li>');
}
?>
</ul><?php
?>
<?php } else { ?>
<?php wp_get_archives('type=monthly');?>
<?php } ?></ul>
</div>
<div class="archive-bottom"></div>
<!-- <div class="clear"></div>-->
<?php } ?></div>
Вы в настоящее время не используете ничего, кроме wp_get_archives('type=monthly')
, что, очевидно, вызывает проблему. Вы должны взглянуть на wp_get_archives () документы в Кодексе.
Ниже приведен пример решения, но, вероятно, потребуется немного поработать (предполагается, что вы публикуете каждый месяц в этом году, как показано в вашем сообщении). Это не было проверено, поэтому используйте на свой страх и риск.
// Get the current month number
$current_month = date('n');
// Show the archives for the current year, by month,
// by limiting the returned archives to the current month number
$args = array(
'limit' => $current_month
);
wp_get_archives( $args );// Awesome, now let's get the previous years, but leave off this year
$yearly_archives = wp_get_archives('type=yearly&echo=0');
// Split the returned archives at this year...
$old_archives = explode('</li>', $yearly_archives, 2);
// And only echo list items that don't include this year.
echo $old_archives[1];
Других решений пока нет …