0

私の WordPress ブログは現在、月ごとの形式でアーカイブを表示しています。このような:

2014 年 11 月 2014 年
10 月 2014 年
9 月 2014 年
8 月 2014 年
7 月 2014 年
6 月 2014 年
5 月

など

現在の年がすべての月を表示するように表示する必要がありますが、その前のすべての年については、「年」のみが表示されます。このようなもの:

2014年11月 2014年
10月 2014年
9月
...
... 2014年
2月 2014年
1月
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>
4

1 に答える 1

0

あなたは現在wp_get_archives('type=monthly')、明らかに問題を引き起こしている 以外のものを使用していません。Codexの 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];
于 2014-11-18T09:26:48.303 に答える