Wordpress-获取与自定义分类相关联的自定义帖子类型

时间:2011-02-13 10:11:33

标签: wordpress taxonomy custom-post-type

根据WordPress Codex,get_post_types()函数有一个'分类法'参​​数,但没有确切说明它是如何工作的。

$post_args = array(
            'public'   => true,
            'taxonomies' => 'genre',
            'show_ui' => true
            ); 

$post_types = get_post_types($post_args);

即使类型是注册到“book”帖子类型的分类,上面的代码也不会返回任何内容。

如果我有一个自定义帖子类型的“书籍”,其中包含一些自定义分类,例如“作者”和“流派”......我想使用get_post_type()返回与'相关联的帖子类型'流派'......很明显'书'。我正在尝试制作一些有助于在post_type中设置get_posts()参数的内容,因为它只会默认搜索帖子而不是自定义帖子类型。显然我可以设置post_type参数,但是我想让它与我在不同主题中可能使用的任何未来帖子类型向前兼容。

2 个答案:

答案 0 :(得分:7)

虽然我在这个派对上有点晚了:

taxonomies不是get_post_types()的有效参数,所以最多只会忽略该参数并返回所有已注册帖子类型的列表。

可能你最好的选择是get_taxonomy()对象:

$currentTaxonomy = get_query_var('taxonomy');

//  Or: $currentTaxonomy = 'genre';

if ($currentTaxonomy) {
    $taxObject = get_taxonomy($currentTaxonomy);
    $postTypeArray = $taxObject->object_type;
}

这将为您提供已注册分类的所有帖子类型的数组。

答案 1 :(得分:0)

可能想要使用两者的组合:get_posts()然后传入post_type。下面的内容可能会帮助您入门。

$post_types = get_post_types();
    if ( is_category() || is_tag()) {

        $post_type = get_query_var('article');

        if ( $post_type )
            $post_type = $post_type;
        else
            $post_type = $post_types;

        $query->set('post_type', $post_type);

    return $query;
    }
}

你不想使用is_category和is_tag,你会使用像is_in_taxonomy()这样的东西。你究竟想做什么?我想你正试图和我做同样的事情......

自定义帖子类型的存档页面上的

使用自定义循环来处理某些自定义帖子类型的所有分类。如下:

taxonomy-[MY-CPT].php

VS。

taxonomy-[MY-CUSTOM-TAXONOMY].php

我实际上是在尝试和我们说话一样,我会让你知道我的想法。

注意我刚刚编写了is_in_taxonomy()