2017-11-01 2 views
0

私は日付でソートしようとしているカスタムポストタイプ 'イベント'を持っています。何らかの理由でそれが機能していません。私は混乱しています。なぜなら、問題なく前にこれを実際に行ったからです。今回は何が間違っていますか?ACF Date Pickerによるカスタム投稿のクエリの並べ替えが正しく機能していませんか?

最初の3行は、ACFカスタムフィールドを使用してページに割り当てられた月、年、および状態を取得する行です。 (これは、イベントが持つACFフィールドとは別のものです。)基本的には、その州、月、および年のイベントだけを取得しようとしています。

<?php 
      $thestate = get_field('page_state'); 
      $themonth = get_field('page_month'); 
      $theyear = get_field('page_year'); 

      $meta_query = array(
       array(
        'key'  => 'event_state', 
        'value'  => $thestate, 
        'compare' => '=' 
       ), 
       array(
        'key'  => 'event_month', 
        'value'  => $themonth, 
        'compare' => '=' 
       ) 
      ); 

      $args = array(
       'meta_key'   => 'date_of_event', 
       'order_by'   => 'meta_value_num', 
       'order'    => 'ASC', 
       'post_type'   => 'event', 
       'posts_per_page' => -1, 
       'meta_query'  => $meta_query 
      ); 

      $myposts = get_posts($args); 

      if($myposts) { ?> 

      <?php foreach($myposts as $post) { ?> 
       <?php setup_postdata($post); ?> 

       /*--Code Here--*/ 


       <?php wp_reset_postdata(); ?> 
      <?php } ?> 
      <?php } ?> 

EDIT: 私は問題を把握しました。私は 'orderby'を使用する必要があったのに対し、 'order_by'を使用していたという事実が原因であることが判明しました。アンダースコアを削除することは、完了しました。しかし、なぜこれが当てはまるのかは分かりません。 'order_by'は他人のために働くようですが、私はまだちょっと混乱していますが、私はそれを修正することができてうれしいです。

答えて

0

order_byは 'meta_value_num'を使用していますが、日付が文字列であるため、おそらく 'meta_value'を使用する必要があります。保存した日付が 'Y-m-d'の形式であるかどうかをチェックする必要があります。そうしないと、並べ替えが正しく機能しません。

+0

私は 'meta_value_num'と 'meta_value'の両方を試しましたが、どちらも動作しませんでした。また、出力日付ピッカー形式はすでに 'Ymd'です。それは「Y-m-d」と同じではありませんか? –

+0

よく一般的には、年、月、日の間にダッシュを入れておくべきです...変数の出力を見ることができない限り、もう助けが難しいです。 –

+0

「Y-m-d」は役に立たなかったようです。 :/条件に一致するすべての投稿は、作成された順に表示されます。したがって、本質的に時系列的には、投稿された日付でソートされているかのようになります。 –

関連する問題