为什么get_posts()不能使用自定义分类法?

时间:2016-07-14 10:39:37

标签: php wordpress

wordpress中的默认分类法包括[类别],[标签] ...现在我想自定义名称为post_types的分类法:

function custom_post_types() {
   register_taxonomy('post_types', 'post', [
       'hierarchical'      => true,
       'labels'            => __( 'Post Types' ),
       'show_ui'           => true,
       'show_admin_column' => true,
       'query_var'         => true,
       'rewrite'           => array( 'slug' => 'post-type' ),   
   ]);
}

add_action('init', 'custom_post_types');

我这样做并且正在工作!然后,我查询帖子:

$args = [
        'post_type' => 'post',
        'posts_per_page' => -1,
        'tax_query' => [
            [
                'taxonomy' => 'post_types',
                'field' => 'slug',
                'terms' => $myTerm
            ]
        ]
];

$posts = get_posts($args);

var_dump($posts); // results is empty

虽然我的数据存在,但查询结果为空。但是如果使用wordpress的默认分类法(作为类别或标签...)进行查询,则结果始终是正确的。

我认为我的自定义分类法存在一些问题,但我不确切地知道错误是什么?

你能帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我已经在虚拟WP安装中复制了您的代码,它对我有用。

但请注意,因为labels参数中的register_taxonomy值不有效且您的自定义分类名称默认为类别,这可能会导致与WP的混淆原帖子类别。

我建议您将register_taxonomy参数替换为'labels'=> ['name' => __('Post Types')],,并确保将此分类的术语应用于您的帖子。

function custom_post_types() {
   register_taxonomy('post_types', 'post', [
       'hierarchical'      => true,
       'labels'            => ['name' => __('Post Types')],
       'show_ui'           => true,
       'show_admin_column' => true,
       'query_var'         => true,
       'rewrite'           => array( 'slug' => 'post-type' ),
   ]);
}

add_action('init', 'custom_post_types');