WordPress中的分类法列表,具体取决于自定义帖子类型

问题描述 投票:0回答:1

我有一个名为houses的自定义帖子类型。在这篇文章类型中我有自定义分类,如:

(名称 - 字段类型 - 元键)

  • 城市(分类学 - 城市)
  • 海滩(自定义岗位类型 - 海滩)
  • 类型(分类 - 类型)
  • 状态(分类 - 状态)

我的网站上还有一个插件,有4个选择:

  • 海滩
  • 类型
  • 状态

我需要做的是,在选择选项时更新这些选项。

例如,如果我选择Barcelona for City和Sale for Status,我需要将所有类型和海滩与这些选项相同。

我现在不需要获取帖子,只需更新选择选项,如过滤器。

这是一个例子:

Filter with selects

php wordpress custom-post-type custom-taxonomy
1个回答
0
投票

在努力解决这个问题之后,我发现了一个有效的解决方法。

由于每个自定义字段都与我的自定义帖子类型有关联,因此我能够使用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相结合,为每个选择进行数据更新。

© www.soinside.com 2019 - 2024. All rights reserved.