サポート » 使い方全般 » サイドバーに、年毎に記事リンク一覧を表示させたい

  • 解決済 shirobaracoffee

    (@shirobaracoffee)


    よろしくお願いいたします。

    サイドバーに記事への一覧リンクを表示させたいのですが、
    年別に、下記のように表示させたいです。

    2015年
     記事1
     記事2
     記事3
    2014年
     記事4
     記事5
     記事6

    <ul>
    <?php
    $posts = get_posts('numberposts=0');
    foreach($posts as $post) :
    setup_postdata($post);
    ?>
    <li>
    <?php the_date( Y, '<p>', '年</p>' . "\n" ); ?>
    <ul>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    </ul>
    </li>
    <?php endforeach; ?>
    </ul>

    上記のような記述で近しい表現になったのですが、
    同じ年でも月が違う場合は下記のような表示になってしまいます。

    2015年
     記事1
     記事2
    2015年
     記事3
    2014年
     記事4
    2014年
     記事5
     記事6

    希望の表示にするにはどのように記述すれば良いでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • <ul>
    <?php
    $posts = get_posts('numberposts=0');
    $_y = null; // 比較用変数
    foreach($posts as $post) :
    	setup_postdata($post); ?>
    <li>
    <?php
    	$y = get_the_date( 'Y' );
    	if ( $y !== $_y ) { // 比較!年が変わっていたら出力 ?>
    <p><?php echo esc_html( $y ); ?>年</p>
    <?php
    	} ?>
    <ul>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    </ul>
    </li>
    <?php
    	$_y = $y; // 書き出し終えた投稿年を比較用変数に格納
    endforeach; ?>
    </ul>

    未検証ですが、これでどうでしょう。

    mimosafaさま

    早速ありがとうございます!
    お教え頂いたソースで解決できました!!

    助かりました。本当にありがとうございます。

    shirobaracoffee さん

    よかったです。
    忘れていましたが、endforeach; の後に wp_reset_postdata(); を記述したほうが良いかもしれません。

    ループ – WordPress Codex 日本語版#入れ子のループ

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「サイドバーに、年毎に記事リンク一覧を表示させたい」には新たに返信することはできません。