• 解決済 heureux

    (@heureux)


    get_postsを使ってイベントスケジュールのページを作っています。
    イベントの日付を入れるカスタムフィールド(「日付」という名前です)で判別して、
    今日か未来のイベントだけ表示しているのですが、
    並び順が、イベントの日付順ではなく、公開日順で並んでしまっています。
    下記のソースのどこが間違っているのかもしご存知の方がいらっしゃいましたら、ご教示いただければと思います。

    <?php
    				$current_date = date_i18n( 'Y/m/d' );
    				$args = array(
    						'post_type' => 'schedule',
    						'meta_query' => array(
    							array(
    								//'key' => '日付',
    								//'value' => $current_date,
    								//'compare' => '>=',
    								//'type' => 'DATE'
    
    								'key' => '日付',
    								'value' => $current_date,
    								'compare' => '>=',
    								'meta_key' => '日付',
    								'orderby' => 'meta_value',
    								'order' => 'desc',
    								'type' => 'DATE',
    							)
    						),
    						//'order' => 'desc',
    				);
    				$output = '';
    				$my_posts = get_posts( $args );
    				if($my_posts):
    				global $post;
    				foreach ( $my_posts as $post ) : setup_postdata( $post );
    			?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 実際に試した訳ではないのですが、orderbymeta_query の内側に書く代わりに、meta_query と横並びに書くと、もしかしてちゃんとソートされないでしょうか。

    または、下記リンク先の内容(英文です)が類似のトラブルを示しているように思います。こちらも試してはいないのですが。
    WordPress meta_query and orderby custom field

    トピック投稿者 heureux

    (@heureux)

    ghvstさま

    コメントありがとうございます!
    orderby を meta_query と横並びに書くときちんと並びました!!!
    大変助かりました!!!
    どうぞありがとうございます!!!

    ▼最終コード▼

    <?php
    	$current_date = date_i18n( 'Y/m/d' );
    	$args = array(
    			'post_type' => 'schedule',
    			'meta_query' => array(
    				array(
    					'key' => '日付',
    					'value' => $current_date,
    					'compare' => '>=',
    				)
    			),
    			'meta_key' => '日付',
    			'orderby' => 'meta_value',
    			'order' => 'desc',
    			'type' => 'DATE',
    	);
    	$output = '';
    	$my_posts = get_posts( $args );
    	if($my_posts):
    	global $post;
    	foreach ( $my_posts as $post ) : setup_postdata( $post );
    ?>

2件の返信を表示中 - 1 - 2件目 (全2件中)

トピック「get_postsを使ったループをカスタムフィールドの日付でソートしたい」には新たに返信することはできません。