我有一个自定义帖子类型“events”,其中包含start_date和end_date的自定义字段。我正在尝试制作即将到来的活动的简单列表。如果我只查询一个start_date> =今天的事件,它可以正常工作。如果我在meta_query中添加了“AND”,并且所有事件的结束日期为< =今天 - 它不返回任何内容。WP_Query meta_query具有2个自定义字段的日期范围
我的自定义字段(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 - 是否N逾时工作:
$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',
),
)
);