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的默认分类法(作为类别或标签...)进行查询,则结果始终是正确的。
我认为我的自定义分类法存在一些问题,但我不确切地知道错误是什么?
你能帮帮我吗?谢谢!答案 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');