获取附加了分类法的帖子类型


13

获得分类或术语后,是否可以提取该分类所附加的任何/所有职位类型?

例如,了解内置分类法category或在分类法中被赋予术语category,是否有一项功能可以反向工程category为分类法的post

不需要的信息

我正在使用分类术语中的一些自定义字段,这些字段特别需要知道帖子类型,但是如果由于某种原因,URL中的帖子类型参数不存在,则会遇到麻烦。

Answers:


12

如果我们查看全局$wp_taxonomies变量,我们将看到关联的对象类型。

可能有更好的方法甚至是核心功能,但是您可以尝试以下方法:

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' )
{
    global $wp_taxonomies;
    return ( isset( $wp_taxonomies[$tax] ) ) ? $wp_taxonomies[$tax]->object_type : array();
}

然后对于默认设置,您将获得:

$out = wpse_172645_get_post_types_by_taxonomy( 'category' );
print_r( $out );

输出:

Array
(
    [0] => post
)

8

您可以使用进行相反的操作get_object_taxonomies。与之结合使用get_post_types以遍历员额类型,以检查为每种员额注册的分类法。

编辑 -这是一个示例,该示例在不使用脏全局变量的情况下产生与@birgire函数相同的输出。

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' ){
    $out = array();
    $post_types = get_post_types();
    foreach( $post_types as $post_type ){
        $taxonomies = get_object_taxonomies( $post_type );
        if( in_array( $tax, $taxonomies ) ){
            $out[] = $post_type;
        }
    }
    return $out;
}

3

无需$wp_taxonomies直接使用全局变量,因为WordPress具有get_taxonomy()访问其中的分类法的功能(自2.3.0版以来为核心)。从WordPress 4.7.0开始,返回类型是WP_Taxonomy具有属性的对象$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.