获取用于查询自定义帖子类型的当前页面自定义分类法

时间:2018-09-28 18:20:30

标签: php wordpress custom-post-type custom-taxonomy custom-wordpress-pages

到目前为止,我有一个注册的名为position的自定义分类法,它与特定页面相关联,还有一个自定义的帖子类型People。我还有一个页面,该页面的自定义分类法也设置为也使用position分类法。

我想做的就是获取它,以便我可以查询People的自定义帖子类型,以显示具有在页面上设置的自定义分类法以及帖子类型的条目列表。

例如,position的分类法已分配了一些项目,例如-销售,会计等。我有一些自定义帖子类型People的条目,例如-John,Mary,Sam等。在这种情况下,我让John和Mary设置为使用Sales的分类法。

在“销售”页面上,我设置为使用position的自定义Sales分类法。

我要获取的是在“销售”模板页面上获得position的自定义分类法,该分类法应返回Sales的名称和/或子词段,然后获取该信息并将其传递给查询以检查People自定义帖子类型并从该自定义分类法中提取相关人员。在这种情况下,应该可以在“销售”页面上拉开约翰和玛丽的两个人。

到目前为止,我在“销售”模板页面上有此标签:

<?php $tax = get_terms( array( 'taxonomy' => 'position' ) ); ?>

这给了我一系列的术语,但是如何获得在页面上设置的相关分类法名称的名称,然后将其传递给查询以获取人员呢?

就像我使用get_terms一样,它为我提供了所有内容,并且只需要针对该特定页面的一组分类法即可,将其分配给变量,然后将其用于查询像这样:

<?php $args = array( 'post_type' => 'people', 'taxonomy' => $tax);
$loop = new WP_Query( $args ); ?>

1 个答案:

答案 0 :(得分:0)

好,所以我终于明白了。

为了完成这项工作,您需要从页面获取当前的帖子ID,将其传递给get_the_terms,然后构造一个查询以使用tax_query查询自定义帖子类型,然后将其传递到tax_query数组中:

<?php
            $id = get_post($post->ID);
            $tax = get_the_terms($id, 'position');
            $args = array(
              'post_type' => 'people',
              'tax_query' => array(
                array(
                  'taxonomy' => 'position',
                  'field'    => 'slug',
                  'terms'    => $tax[0]->slug,
                ),
              ),
            );
            $loop = new WP_Query( $args );
            ?>

这将在当前页面和自定义帖子类型之间交叉引用自定义分类,并将获得分配有特定分类(在本例中为Sales)的那些帖子类型。

希望这会有所帮助!