我有一个自定义帖子类型“事件”,其中包含 start_date 和 end_date 的自定义字段。我正在尝试列出即将发生的事件的简单列表。如果我只查询 start_date >= today 的事件,它工作正常。如果我添加一个 meta_query 来说“AND”所有带有 end_date <= today 的事件 - 它不会返回任何内容。
我的自定义字段(start_date、end_date)存储为 unix 时间戳,这就是我使用“NUMERIC”和“meta_value_num”的原因。$today 是当前日期的时间戳。以下是我正在尝试做的事情的例子......把我的头发拉出来 - 任何帮助将不胜感激!
这有效:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
)
);
当我为 meta_query 添加第二个数组时 - 不起作用:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'NUMERIC',
),
)
);
当我在主查询中使用 meta_compare 时,单个 meta_query - 不起作用:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'meta_value_num' => $today,
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'date',
),
)
);
当我在主查询中使用 meta_compare 和多个 meta_queries - 不起作用:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'meta_value_num' => $today,
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'NUMERIC',
),
)
);