サポート » 使い方全般 » カスタム投稿タイプ内で月別記事一覧

  • 解決済 Chiaki

    (@mel_cha)


    カスタム投稿タイプのアーカイブページのsidebar.phpで、月別の記事一覧を出力したいです。
    下記のような出力を考えております。

    —–
    ▼2012年7月(←※リンク不要)
    記事のタイトル+カスタムフィールドの値(リンク)
    記事のタイトル+カスタムフィールドの値(リンク)
    ▼2012年6月
    記事のタイトル+カスタムフィールドの値
    記事のタイトル+カスタムフィールドの値
    —–

    記事の取得はquery_post()で取得しているのですが、年月で区切るとなるとどうすればよいのかわかりません。get_post_timeで出来るのかなと手を動かしてみましたが、知識不足です・・・。

    どうか、ご教授くださいますようお願い申し上げます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    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方面の知識が十分ではなく、もう少しだけお力をお貸し下さい。

    どうぞ、よろしくお願い致します。

    モデレーター jim912

    (@jim912)

    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さん

    ご返信ありがとうございます。
    ご提示頂いたコードで出力できました!
    コメントまで書いて頂いてありがとうございます。後学のためにじっくり読ませて頂きます。

    本当にありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタム投稿タイプ内で月別記事一覧」には新たに返信することはできません。