在WordPress插件开发中,如何使用 register_taxonomy() 创建自定义分类法?

2024-12-27 33 0

在WordPress中创建自定义分类法(taxonomy)通常用于为文章(posts)、页面(pages)或其他自定义文章类型(custom post types)添加额外的分类方式。以下是如何使用 register_taxonomy() 函数创建自定义分类法的步骤:

  1. 定义钩子:首先,你需要确定在哪个钩子上注册你的自定义分类法。通常,我们使用 init 钩子。

  2. 使用 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",否则自定义分类法将不会显示在管理界面中。

相关文章

在WordPress主题开发中,如何使用is_home()和is_front_page()来判断首页?
如何使用 WordPress 的 the_post_thumbnail() 函数显示特色图片?
在WordPress插件中,如何使用 update_option() 和 get_option() 来存储和检索设置?
如何使用 add_shortcode() 函数在WordPress中创建自定义短代码?
在WordPress主题中,如何使用 get_header(), get_footer(), 和 get_sidebar() 函数来包含模板部分?
在WordPress主题开发中,如何使用 the_custom_logo() 函数来显示自定义标志?