在解决了这个问题之后,我找到了一个可行的解决方法。
由于每个自定义字段都与我的自定义帖子类型相关,因此我可以使用 wp_get_object_terms 获取每个自定义分类的术语。
使用查询检索所有帖子:
$args = array(
'post_type' => 'houses'
);
$houses = new WP_Query($args);
$posts = $houses->posts;
// get an array with all ID fields
$my_post_ids = wp_list_pluck($posts, 'ID');
之后我可以得到上面这些 ID 的条款:
$city_terms = wp_get_object_terms($my_post_ids, 'cities');
$status_terms = wp_get_object_terms($my_post_ids, 'status');
$type_terms = wp_get_object_terms($my_post_ids, 'type');
为了在选择一个选项以刷新选择信息时获得我需要的行为,我只需要为此更新查询。例如,如果我选择了某个城市:
$args = array(
'post_type' => 'houses',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'city',
'value' => 107,
'compare' => 'LIKE'
)
)
);
要进行过滤,只需在 meta_query 数组中添加一个新关系即可。
$args = array(
'post_type' => 'houses',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'city',
'value' => 107,
'compare' => 'LIKE'
),
array(
'key' => 'status',
'value' => 80,
'compare' => 'LIKE'
)
)
);
所有这些都与 Ajax 相结合,为每个选择更新数据。