在努力解决这个问题后,我找到了一个行之有效的解决方法。
由于每个自定义字段都与我的自定义帖子类型有一个连接,所以我可以使用wp\\u get\\u object\\u 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\\u查询数组中添加一个新关系。
$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结合在一起,为每个选择进行数据更新。