我想获取特定帖子类型的帖子,其中包含具有帖子类型类型的自定义字段。
我的帖子类型名为“tour”,而tour post类型的自定义字段名为“country”,其类型为Post Object。
获取其所在国家/地区为“土耳其”的所有旅游的查询:
$located_tours = get_posts(array(
'numberposts' => -1,
'post_type' => 'tour',
'meta_query' => array(
'key' => 'country',
'title' => 'Turkey',
'compare' => 'LIKE'
)
));
但是此查询将返回所有游览而不对Country
进行任何过滤任何人都有任何想法? 感谢
答案 0 :(得分:0)
试试这个:
$tour_args = array(
'posts_per_page' => -1,
'post_type' => 'tour',
'meta_query' => array(
array(
'key' => 'country',
'value' => 'Turkey',
'compare' => '=',
),
),
);
$located_tours = new WP_Query($tour_args);
答案 1 :(得分:0)
首先,meta_query
expects nested arrays,所以不是:
'meta_query' => array(
'key' => THE_KEY,
'value' => THE_VALUE,
),
但:
'meta_query' => array(
array(
'key' => THE_KEY,
'value' => THE_VALUE,
),
),
请注意,在您的情况下不需要compare
,因为其默认值为=
。
无论如何,你在这里有一个概念上的错误。如果您使用ACF且country
自定义字段类型为Post Object
,则存储在数据库中的此字段的值不是title
,而是相关帖ID
(您的返回格式是Post Object
或Post ID
)。
类似的东西(在wp_postmeta
表中):
因此,您需要按国家/地区ID
查询,而不是国家/地区的标题。您可以使用get_page_by_title
检索所需的国家/地区ID:
// Assuming your Country's CPT slug is 'country'
$country = get_page_by_title( 'Turkey', 'OBJECT', 'country' );
$tours_args = array(
'posts_per_page' => -1,
'post_type' => 'tour',
'meta_query' => array(
array(
'key' => 'country',
'value' => $country->ID
)
)
);
$located_tours = get_posts( $tours_args );
希望这有帮助!