mel_chaさん、こんにちは。
ループで前の記事と日付を比較して、月が変わっていたら、月を表示するようにすれば大丈夫です。
> jim912さん
教えていただいてありがとうございます!
おかげさまで日付を比較するための準備までは出来たのですが、ループ部分が出来ません。。
<ul>
<?php query_posts( array('post_type'=>'カスタム投稿タイプ','posts_per_page'=>-1,'order'=>'DESC','orderby'=>'date') );
if ( have_posts() ) : while ( have_posts() ) : the_post();
$postmonth = get_post_time('Yn');
$prevpost = get_previous_post();
$prevmonth = get_post_time('Yn',false,$prevpost);
if( $postmonth != $prevmonth ) { ?>
<li><span><?php echo get_post_time('▼Y年n月'); ?></span><ul>
<?php }; ?>
<li><a href="<?php the_permalink(); ?>">「<?php the_title(); ?>」</a></li>
<?php if( $postmonth != $prevmonth ) { ?>
</ul></li>
<?php };
endwhile;endif;wp_reset_query(); ?>
</ul>
これでは(当然ですが・・・)月が変わった時にしか月が反映されず、
月が同じ場合の時はliタグでで囲めません。
while文を使うのだろうな・・・というのはわかるのですが、
何分php方面の知識が十分ではなく、もう少しだけお力をお貸し下さい。
どうぞ、よろしくお願い致します。
mel_chaさん
こんな感じでどうでしょう。
<ul>
<?php query_posts( array('post_type'=>'カスタム投稿タイプ','posts_per_page'=>-1,'order'=>'DESC','orderby'=>'date') );
if ( have_posts() ) :
$postmonth = false; // 比較用の変数を初期化
while ( have_posts() ) :
the_post();
if( $postmonth != get_post_time('Yn') ) : // 投稿年月を比較
if ( $postmonth !== false ) : // 最初のループは除外。2回目以降で投稿年月が異なれば閉じタグを出力
?>
</ul>
</li>
<?php
endif;
?>
<li><span><?php echo get_post_time('▼Y年n月'); ?></span>
<ul>
<?php
endif;
?>
<li><a href="<?php the_permalink(); ?>">「<?php the_title(); ?>」</a></li>
<?php
$postmonth = get_post_time('Yn'); // 比較用の変数に年月を代入
endwhile;
endif;
wp_reset_query();
?>
</ul>
</li>
</ul>
> jim912さん
ご返信ありがとうございます。
ご提示頂いたコードで出力できました!
コメントまで書いて頂いてありがとうございます。後学のためにじっくり読ませて頂きます。
本当にありがとうございました!