在WordPress中,register_taxonomy()
函数用于创建自定义分类法(taxonomy),这允许你组织内容,就像使用内置的“分类”(categories)和“标签”(tags)一样。以下是如何使用 register_taxonomy()
创建自定义分类法的步骤:
-
确定自定义分类法的名称和参数:首先,你需要定义自定义分类法的名称(例如
book_genre
),以及它的参数,比如标签、复数名称、对象类型等。 -
设置钩子:使用
register_taxonomy_for_object_type()
函数将自定义分类法与特定的对象类型(如帖子、页面或自定义帖子类型)关联起来。 -
编写代码:将自定义分类法的注册代码放在主题的
functions.php
文件中,或者在专门的插件文件中。
以下是一个示例代码,展示如何创建一个名为“Book Genre”的自定义分类法,并将其与名为“book”的自定义帖子类型关联:
// 注册自定义分类法
function my_custom_taxonomy() {
// 设置参数
$labels = array(
'name' => _x( 'Book Genres', 'taxonomy general name' ),
'singular_name' => _x( 'Book Genre', 'taxonomy singular name' ),
'search_items' => __( 'Search Book Genres' ),
'all_items' => __( 'All Book Genres' ),
'parent_item' => __( 'Parent Book Genre' ),
'parent_item_colon' => __( 'Parent Book Genre:' ),
'edit_item' => __( 'Edit Book Genre' ),
'update_item' => __( 'Update Book Genre' ),
'add_new_item' => __( 'Add New Book Genre' ),
'new_item_name' => __( 'New Book Genre Name' ),
'menu_name' => __( 'Book Genres' ),
);
// 定义参数
$args = array(
'hierarchical' => true, // 是否允许层级结构,类似于分类(categories)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'book-genre' ),
);
// 注册分类法
register_taxonomy( 'book_genre', array( 'book' ), $args );
}
// 将自定义分类法与自定义帖子类型关联
function my_init() {
register_taxonomy_for_object_type( 'book_genre', 'book' );
}
// 添加钩子
add_action( 'init', 'my_custom_taxonomy', 0 );
add_action( 'init', 'my_init' );
在上面的代码中,我们首先定义了自定义分类法的标签和参数,然后使用 register_taxonomy()
函数来注册分类法,并通过 register_taxonomy_for_object_type()
函数将 book_genre
分类法与 book
帖子类型关联起来。最后,我们通过 add_action()
函数将自定义分类法的注册过程添加到 WordPress 的初始化钩子中。
确保在定义自定义分类法之前,你的自定义帖子类型已经注册,并且在使用 register_taxonomy_for_object_type()
时,传递正确的帖子类型名称。