0

我正在尝试查询现有“场地”字段的“实时”帖子(场地字段是场地页面的 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',
                    )
                )
            )
    )

));

4

1 回答 1

0

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,
 ));
于 2021-02-21T10:37:22.153 回答