0

根据 WordPress Codex,该get_post_types()函数有一个“分类法”参数,但没有解释它是如何工作的。

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

$post_types = get_post_types($post_args);

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

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

4

2 回答 2

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;
}

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

于 2014-04-05T13:44:59.720 回答
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

对比

taxonomy-[MY-CUSTOM-TAXONOMY].php

我实际上正在尝试做和我们说话一样的事情,我会让你知道我想出什么。

注意我刚刚编写了 is_in_taxonomy()

于 2011-02-13T14:08:03.667 回答