在WordPress中创建自定义分类法(taxonomy)通常用于为文章(posts)、页面(pages)或其他自定义文章类型(custom post types)添加额外的分类方式。以下是如何使用 register_taxonomy()
函数创建自定义分类法的步骤:
-
定义钩子:首先,你需要确定在哪个钩子上注册你的自定义分类法。通常,我们使用
init
钩子。 -
使用
register_taxonomy()
函数:在init
钩子回调函数中,使用register_taxonomy()
函数来创建自定义分类法。
下面是一个示例代码,展示如何创建一个名为 "Genre" 的自定义分类法,用于一个名为 "book" 的自定义文章类型:
function create_custom_taxonomy() {
// 设置标签,用于后台显示
$labels = array(
'name' => _x( 'Genres', 'taxonomy general name' ),
'singular_name' => _x( 'Genre', 'taxonomy singular name' ),
'search_items' => __( 'Search Genres' ),
'all_items' => __( 'All Genres' ),
'parent_item' => __( 'Parent Genre' ),
'parent_item_colon' => __( 'Parent Genre:' ),
'edit_item' => __( 'Edit Genre' ),
'update_item' => __( 'Update Genre' ),
'add_new_item' => __( 'Add New Genre' ),
'new_item_name' => __( 'New Genre Name' ),
'menu_name' => __( 'Genres' ),
);
// 注册自定义分类法
register_taxonomy('genre', array('book'), array(
'hierarchical' => true, // 如果是层级关系,设置为 true
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ),
));
}
// 添加到 init 钩子
add_action( 'init', 'create_custom_taxonomy', 0 );
在这个例子中,我们首先定义了一个 $labels
数组,它包含了用于后台显示的所有标签。然后,我们使用 register_taxonomy()
函数注册了一个名为 "genre" 的分类法,并将其关联到 "book" 自定义文章类型上。
以下是 register_taxonomy()
函数的一些重要参数:
- taxonomy:自定义分类法的名称(slug)。
- object_type:一个数组,包含了要关联此分类法的文章类型。
- args:一个数组,包含了分类法的设置选项,如是否层级(hierarchical)、标签(labels)、是否在后台显示UI(show_ui)、是否在管理列显示(show_admin_column)、查询变量(query_var)和重写规则(rewrite)等。
请确保在激活你的插件或主题之前,已经注册了自定义文章类型 "book",否则自定义分类法将不会显示在管理界面中。