WEBOPIXEL

WordPressで年別に分けて月のアーカイブリストを表示する方法

Posted: 2015.01.26 / Category: WordPress 

WordPressで月のアーカイブリストを表示するときはwp_get_archivesを使用すると思いますが、そのまま使用するとずらっと表示されてしまいます。
年別に分けて表示できたりするとわかりやすそうですよね。

Sponsored Link

書き出されるhtml

こんな感じで出力できたらいいと思いました。

<div>
    <h4>2015年</h4>
    <ul>

        <li><a href="#">6月(2)</a></li>
        <li><a href="#">5月(6)</a></li>
        <li><a href="#">4月(12)</a></li>
        <li><a href="#">3月(2)</a></li>
        <li><a href="#">2月(8)</a></li>
        <li><a href="#">1月(2)</a></li>
    </ul>
</div>
<div>
    <h4>2014年</h4>
    <ul>
        <li><a href="#">12月(12)</a></li>
        <li><a href="#">11月(6)</a></li>
        <li><a href="#">10月(9)</a></li>
        <li><a href="#">9月(88)</a></li>
        <li><a href="#">8月(6)</a></li>
    </ul>
</div>
    

WordPressコード

表示したい場所に下記のように記述します。

<?php
$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");
foreach($months as $month) :
$year_current = $month->year;
if ($year_current != $year_prev){
if ($year_prev != null){?>
            </ul></div>
        <?php } ?>
<div><h4><?php echo $month->year; ?>年</h4>
<ul>
    <?php } ?>
    <li>
        <a href="<?php bloginfo('url') ?>/date/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>">
            <?php echo date("n", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>月
            (<?php echo $month->post_count; ?>)
        </a>
    </li>
    <?php $year_prev = $year_current;
    endforeach; ?>
</ul></div>
    
引用元:WordPress Year/Month Archives

COMMENTS

masa 2016-02-19 13:51 

はじめまして。
Webサイト制作駆け出し中のOkadaと申します。
私も年別に分けて月のアーカイブリストを表示する方法を調べていて、こちらのページにたどり着きました。

ishiwata様が書かれた、サンプルのhtmlソースにプラス、2015年にもその年のトータル投稿数を表示して、年別のアーカイブページにリンクするようにすることもできるのでしょうか?

出力したいhtmlは以下の感じです。

2015年(32)

6月(2)
5月(6)
4月(12)
3月(2)
2月(8)
1月(2)

2014年(121)

12月(12)
11月(6)
10月(9)
9月(88)
8月(6)

突然のコメントで申し訳ございません。
色々コードを書き換えてテストしているのですが、なかなか実現できず思い切ってコメントさせていただきました。
もしご教授いただけましたら幸いでございます。
よろしくお願いいたします。

LEAVE A REPLY

コードを書く場合は<pre>で囲んでください。