Php WordPress:使用meta_查询对多个帖子类型进行单一查询?
我试图在WordPress中设置一个查询,返回来自不同帖子类型的组合结果,并使用适用于每个帖子类型的meta_查询。在本例中,我希望获得具有相应的Php WordPress:使用meta_查询对多个帖子类型进行单一查询?,php,wordpress,Php,Wordpress,我试图在WordPress中设置一个查询,返回来自不同帖子类型的组合结果,并使用适用于每个帖子类型的meta_查询。在本例中,我希望获得具有相应的'related.'$post\u type'的meta\u查询(自定义字段)的标准帖子,以及当前日期之后的事件的自定义帖子类型的帖子。我的查询如下,虽然它似乎正确地获得了标准帖子,但它显示了所有事件,而不仅仅是即将发生的事件: $args = array( 'post_type' => array('post', 'ev
'related.'$post\u type'
的meta\u查询
(自定义字段)的标准帖子,以及当前日期之后的事件的自定义帖子类型的帖子。我的查询如下,虽然它似乎正确地获得了标准帖子,但它显示了所有事件,而不仅仅是即将发生的事件:
$args = array(
'post_type' => array('post', 'event'),
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => $limit,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'related_'.$post_type,
'value' => $post_id,
'compare' => 'LIKE',
),
array(
'key' => 'event_start_date',
'type' => 'DATE',
'value' => current_time('Ymd'),
'compare' => '>=',
),
)
);
这是否可以在单个查询中实现,或者我需要使用相应的meta_查询对post和events进行单独的查询,并合并生成的数组?或者我可以更好地组织查询,使每个meta_查询与其各自的帖子类型对齐吗?感谢您的帮助。您可以查询多种帖子类型:
post_type (string / array) - use post types. Retrieves posts by Post Types, default value is 'post'. If 'tax_query' is set for a query, the default value becomes 'any';
编辑:我觉得您应该使用YYYY-MM-DD
mysql日期格式,但您是对的-它确实接受PHP日期格式,如Ymd
(以及'mysql'
或'timestamp'
)
查询的结构似乎很好-我唯一觉得奇怪的是“related_uu”的值。$post_u类型自定义字段:
'key' => 'related_'.$post_type,
'value' => $post_id,
post_id实际上是自定义字段的值吗?邮递表由以下部分组成:
meta_id
post_id
meta_key
meta_value
post\u id通常也不是meta\u值?您可以查询多种post类型:
post_type (string / array) - use post types. Retrieves posts by Post Types, default value is 'post'. If 'tax_query' is set for a query, the default value becomes 'any';
编辑:我觉得您应该使用YYYY-MM-DD
mysql日期格式,但您是对的-它确实接受PHP日期格式,如Ymd
(以及'mysql'
或'timestamp'
)
查询的结构似乎很好-我唯一觉得奇怪的是“related_uu”的值。$post_u类型自定义字段:
'key' => 'related_'.$post_type,
'value' => $post_id,
post_id实际上是自定义字段的值吗?邮递表由以下部分组成:
meta_id
post_id
meta_key
meta_value
post\u id通常也不是meta\u值?我也有同样的问题。将meta\u query
参数应用于具有多个post\u类型的查询时,meta\u query
参数将应用于所有post类型,因此,它只返回包含所查询的元字段的post
例如,使用以下meta\u查询
参数执行wp\u查询时:
'meta_query' => array(
array(
'key' => 'agenda_date',
'value' => date('Ymd'),
'compare' => '>=',
),
)
仅返回包含元字段“议程日期”的post\u类型的帖子。所有其他帖子都被忽略
如果我删除meta_query
参数,所有参数都可以正常工作,并且我可以毫无问题地查询多个帖子类型('post_type'=>'agenda,post'
)
摆弄关系
设置和模拟伪元查询
参数似乎不起作用,因此唯一的解决方案是劫持SQL查询本身并修改查询的连接
和WHERE
语句
但是太糟糕了。我也有同样的问题。将meta\u query
参数应用于具有多个post\u类型的查询时,meta\u query
参数将应用于所有post类型,因此,它只返回包含所查询的元字段的post
例如,使用以下meta\u查询
参数执行wp\u查询时:
'meta_query' => array(
array(
'key' => 'agenda_date',
'value' => date('Ymd'),
'compare' => '>=',
),
)
仅返回包含元字段“议程日期”的post\u类型的帖子。所有其他帖子都被忽略
如果我删除meta_query
参数,所有参数都可以正常工作,并且我可以毫无问题地查询多个帖子类型('post_type'=>'agenda,post'
)
摆弄关系
设置和模拟伪元查询
参数似乎不起作用,因此唯一的解决方案是劫持SQL查询本身并修改查询的连接
和WHERE
语句
但是太糟糕了。感谢您的回复-有趣的是,我对“实际事件”页面使用了相同的meta_查询,即仅显示当前日期之后的事件,并且效果良好;这里的问题似乎是将它与查询其他帖子结合使用(?)对不起-看起来您使用的当前时间()是正确的。所以对我来说,唯一突出的是你使用post_id作为meta_值——我编辑了我的答案。感谢你的回答——有趣的是,我对实际事件页面使用了相同的meta_查询,即只显示当前日期之后的事件,而且效果很好;这里的问题似乎是将它与查询其他帖子结合使用(?)对不起-看起来您使用的当前时间()是正确的。所以对我来说唯一突出的是你使用post_id作为meta_值-我已经编辑了我的答案。