我如何获得一个职位是与所有分类 - WordPress的(How do I get all tax

2019-10-22 03:01发布

感谢您抽出宝贵的时间来看待这个问题,希望能帮到你!

我在寻找要运行的检索与其他所有分类WordPress的查询。

例如; 说我有一个产品类别/分类和在我的WordPress网站的子产品类别/分类。 当我登陆一个产品类别/分类页面上,我希望看到所有相关的子类别/分类的列表。

我希望这是有道理的后花了很多时间谷歌搜索,所有我能看到的是,询问如何获得相关的分类的所有帖子的问题 - 不是倒过来!

提前谢谢了!

帕特里克

Answer 1:

如果我理解的问题,你想获得适用于特定页面上列出的产品,如A类或分类页面的分类和术语。

假设你有产品ID $ PRODUCT_ID的阵列,例如当前显示产品的ID。 你应该能够得到适用于这些产品如下分类和术语:

global $wpdb;

$ids = implode(',', $product_id);
$query = "SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x
          JOIN wp_term AS t on t.term_id = x.term_id
          JOIN wp_terms_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id
          WHERE r.object_id IN ($ids)
          GROUP BY x.taxonomy, t.name";
$taxonomies = $wpdb->get_results( $query );

在上面:

SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x

是分类(名称)和其条款的term_ids的基表。

JOIN wp_terms AS t on t.term_id = x.term_id

从任期名wp_term_taxonomy匹配每个term_ids的。

JOIN wp_term_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id

再匹配以在wp_term_relationships项,显示哪些产品(自定义后的ID)使用这些术语。

WHERE r.object_id IN ($ids)

限制列表只针对相关的产品在你的列表中的那些方面。

因为,在这个例子中,我们要求x.taxonomy和t.name,

GROUP BY x.taxonomy, t.name

可以确保你没有重复。 如果你需要通过改变选择您可以得到更多的领域。

所以,一旦你跑get_results(),你应该有对象的数组,每一个分类名称和长期的名字。 总体方案是:

+-----------+-------+
| taxonomy1 | term1 |
+-----------+-------+
| taxonomy1 | term2 |
+-----------+-------+
| taxonomy1 | term1 |
+-----------+-------+
| taxonomy2 | term1 |
+-----------+-------+
| taxonomy3 | term1 |
+-----------+-------+
...

您现在可以使用它来创建一个方法,供游人选择进一步的子集,例如,通过为每个分类项的下拉菜单。



文章来源: How do I get all taxonomies a post is related to - Wordpress