サポート » 使い方全般 » カスタムフィールドで日付を指定し、過去・未来で投稿を分けたい

  • 解決済 humao

    (@humao)


    カスタムフィールドに入力した日付と現在の日時を比較し、未来・過去で投稿(カスタム投稿)を振り分ける固定ページを作成しています。

    【カスタムフィールド】(プラグイン:Custom Field Template使用)

    [limit]
    type = textfield
    label = 期限
    date = true
    dateFirstDayOfWeek = 0
    dateFormat = yyyy/mm/dd
    startDate = (new Date()).asString()

    【完成形】

    <h1>未来</h1>
    <dl>
    <dd>投稿1(カスタムフィールドの日付が未来)</dd>
    <dd>投稿2(カスタムフィールドの日付が未来)</dd>
    </dl>
    
    <h1>過去</h1>
    <dl>
    <dd>投稿3(カスタムフィールドの日付が過去)</dd>
    <dd>投稿4(カスタムフィールドの日付が過去)</dd>
    </dl>

    【問題点】以下のコードを書いてみましたが、複数ある投稿(カスタム投稿)の1件分しか表示できません。
    ※上の完成形例だと「投稿1」のみ表示され、他は「投稿なし」になる

    <h1>未来</h1>
    	<?php
    	$current_date = date_i18n( 'Y/m/d' );
    	$args = array(
    		'tax_query' => array(
                array(
                    'taxonomy' => 'タクソノミー',
                    'field' => 'slug',
                    'terms' => array( '表示したいターム' )
                ),
            ),
            'post_type' => 'カスタム投稿名',
    		'meta_query' => array(
    			array(
    				'key' => 'limit',
    				'value' => $current_date,
    				'compare' => '>=',
    				'type' => 'DATE'
    			)
    		)
    	);
    	$output = '';
    	query_posts( $args );
    	if ( have_posts() ) :
    		$output .= '<dl>';
    		while ( have_posts() ) : the_post();
    			$output .= '<dd>' . get_the_title() . '</dd>';
    	endwhile;
    		$output .= '</dl>';
    		echo $output;
    		wp_reset_query();
    	else :
    		// 投稿がない場合の処理
    		echo '<p>投稿なし</p>';
    	endif;
    	?>
    	</section><!-- /section -->

    未来が完成すれば、過去分は「’compare’ => ‘<‘,」に書き換えるだけでできると思います。
    1件分の投稿しか取得できないのはループに問題があるのでしょうか。

    足りない情報などございましたら、ご指摘いただけると助かります。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 問題はなさそうですが、タームを付け忘れているとか。
    ‘posts_per_page’ => -1 も設定するとか。

    トピック投稿者 humao

    (@humao)

    pluto1234様

    ご回答ありがとうございました。
    カスタムフィールドに入力していた値が間違っていたようで、そちらのデータを修正することで解決致しました。
    1件分しか取れなかったのは、たまたまその1件だけデータが正常だったというお恥ずかしい結末でした。
    コードに問題がなさそうとのことで、やっと気が付きました。

    念のため、ご指摘頂きました ’posts_per_page’ => -1 も付けたし、無事完成させることができました。

    お世話になり、ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドで日付を指定し、過去・未来で投稿を分けたい」には新たに返信することはできません。