如何解决元查询中的元查询?
我正在尝试查询现有“场地”字段的“实时”帖子(场地字段是场地页面的 ID)。查询那些场地 ID/帖子,其字段“国家/地区”的值 (ID) 与特定国家/地区值匹配。
$shows = get_posts(array(
'post_type' => 'live','Meta_query' => array(
array(
'Meta_key' => 'venue','Meta_query' => array(
array(
'Meta_key' => 'country','value' => 'country_1',)
)
)
)
));
解决方法
WP_Query 并非旨在生成此类查询中查询逻辑。它应该有一个 post_type,一个 meta_query。
这就是为什么您需要改用 2 个查询。
$live_posts = new WP_Query( array (
'post_type'=> 'live'
'posts_per_page' => -1,'meta_key'=>'venue_key_name','meta_value'=>'venue_key_value','fields' => 'ids'
));
$venue_posts=get_posts(array(
'post_type'=>'venue','meta_key'=>'country_meta_name','meta_value'=> $live_posts->posts,'meta_compare'=>'IN'
));
在给定的代码中,您当然需要更改元键和值。
更新:
如果您的输入参数是场地 ID 数组,而您的输出应该是这些场地的国家/地区帖子,那么您可以使用以下查询:
global $wpdb;
$countries=$wpdb->get_col("SELECT meta_value FROM $wpdb->postmeta
WHERE meta_key='country' AND post_id IN (".implode(",",$array_of_venue_page_ids).")");
if(empty($countries))$countries=[0];
$live_posts = new WP_Query( array (
'post_type'=> 'live'
'post__in' => $countries,));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。