2

私は今後のイベントリストを扱っています。カスタム フィールド event_start_date を使用して、カスタム投稿タイプを作成します。また、追加のカスタム フィールド event_end_date で定義された複数日の延長イベントもいくつかあります。

start_date が今日より後のイベントで正常に機能するコードがあります。しかし、end_date 条件の組み込みに失敗しました。現在機能しない OR 関係を持つ meta_query を使用してみます。

$args = array(
    'post_type' => 'events',
    'posts_per_page' => 4,
    'orderby' => 'event_start_date',
    'order' => 'ASC',
    'meta_query' => array(
         'relation' => 'OR',
          array('key'  => 'event_start_date',
              'value' => date('m/d/Y', strtotime('-1 day')),
              'compare' => '>='),

              array('key'  => 'event_end_date',
                  'value' => date('m/d/Y', strtotime('-1 day')),
                  'compare' => '>=')
    )
);
$loop = new WP_Query( $args ); 
while ( $loop->have_posts() ) : $loop->the_post();
// Rest of the loop

前もって感謝します。

:この他のクエリがあります。これは、開始日のみが現在の日付よりも大きいイベントを選択するのに最適です。

                    $args = array(
                    'post_type' => 'events',
                    'posts_per_page' => 4,
                    'meta_key'  => 'event_start_date',
                    'meta_value' => date('m/d/Y', strtotime('-1 day')),
                    'meta_compare' => '>=', 
                    'orderby' => 'event_start_date',
                    'order' => 'ASC',           
                    ); // The same loop and query
4

2 に答える 2

1

実際にメタ キーで並べ替えるにmeta-keyは、クエリに存在し、meta_valueasorderby値を使用する必要があります。

$args = array(
    'post_type' => 'events',
    'posts_per_page' => 4,
    'meta_key' => 'event_start_date', // required to be used in orderby
    'meta_query' => array(
        'relation' => 'OR',
            array(
                'key'  => 'event_start_date',
                'value' => date('m/d/Y'),
                'compare' => '>'
            ),
            array(
                'key'  => 'event_end_date',
                'value' => date('m/d/Y'),
                'compare' => '>'
            )
    ),
    'orderby' => 'meta_value', // orderby will use the value of meta_key
    'order' => 'asc',
);
$loop = new WP_Query($args);

また、次のように、meta_query の各配列でタイプを使用できます。

array(
    'key'  => 'event_end_date',
    'value' => date('m/d/Y'),
    'compare' => '>',
    'type' => 'DATE' // to specify the type of the field/value
)

更新:date('m/d/Y')現在は (月/日/年) であるため、 and を使用'compare' => '>'して日付形式が正しいことを確認する必要があります。date('m/d/Y', strtotime('-1 day'))過去の日付も表示されます。

他のすべてが正しい場合、これは機能するはずです。 ここを読んでください

于 2012-08-05T03:34:30.983 に答える