web-dev-qa-db-ja.com

モダンな部族カレンダーのwp-query with meta queryがまったく機能しない

私は必要としているように動作している現代の部族によって私のWordPressイベントカレンダーを手に入れようとしている今では良い日を探しています。

DBには何百もの注文日と納入日があり、それぞれ5〜10週間ほど離れています。私が達成しようとしているのは、私が今日または昨日の日付から始まるすべてのイベントを見ることができるリストです。

これは単純に聞こえますが、問題は開始日と終了日の両方を照会する2つの日付の間のイベントを照会するときに発生します。

これを克服する方法はwp_queryとmeta_queryを使用することですが、開始日順で並べ替えるためにメタクエリーを追加しようとする方法に関係なく、それは全体を壊します。

私が抜け出すために私の小さな髪が残っているので、これはどんな助けの下でも以下の質問です!

 <?php
  $query = new WP_Query( array( 'post_type' => 'tribe_events',
    'meta_query' => array(
        array(
            'key' => '_EventStartDate',
            'value' => date('Y-m-d H:i:s', strtotime('-1 week')),
            'compare' => 'date'
        )
    )
  ) );
  if ($query->have_posts())
  {
    while ($query->have_posts()) : $query->the_post();
        echo $query->post->EventStartDate . ' ';
        echo $query->post->post_title . '</br>';

    endwhile;
  }
  wp_reset_query();
  ?>

また、メタ値をに変更してみました

  'value' => date('Y-m-d', strtotime('-1 week')),

しかし、これもうまくいきませんでした...

ありがとう

1
blackhill24

私がすることは、カスタムの 'eventDisplay'を使用して_EventStartDateのクエリを作成することです。これにより、開始日順にすべてのイベントが取り込まれます。その後、ループに入ったら。開始日を出力したい特定の日付と比較します。 tribe_get_start_date()は、比較したいフォーマットを返すことができる日付フォーマットパラメータ( こちらを参照 )を受け取ります。注意してください、このコードはテストされていませんが、正しい方向に進むべきです。

$args = array(
    'post_status'=>'publish',
    'post_type'=> 'tribe_events',
    'posts_per_page'=> 10,
    'meta_key'=> '_EventStartDate',
    'orderby'=> '_EventStartDate',
    'order'=> 'DESC',
    'eventDisplay'=> 'custom',
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) : $query->the_post();
        if(tribe_get_start_date() != [INSERT DATE TO COMPARE WITH]) {
            echo tribe_get_start_date() . ' ';
            the_title() . '</br>';
        }
    endwhile;
}

wp_reset_postdata();
1
ZachTRice