我有一个名为houses的自定义帖子类型。在这篇文章类型中我有自定义分类,如:
(名称 - 字段类型 - 元键)
我的网站上还有一个插件,有4个选择:
我需要做的是,在选择选项时更新这些选项。
例如,如果我选择Barcelona for City和Sale for Status,我需要将所有类型和海滩与这些选项相同。
我现在不需要获取帖子,只需更新选择选项,如过滤器。
这是一个例子:
在努力解决这个问题之后,我发现了一个有效的解决方法。
由于每个自定义字段都与我的自定义帖子类型有关联,因此我能够使用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相结合,为每个选择进行数据更新。