如何使用WordPress的taxonomy API来创建自定义分类和标签?

2024-10-10 80 0

在WordPress中,taxonomy API允许开发者创建自定义分类(categories)和标签(tags),这些通常被称为“分类法”(taxonomies)。以下是创建自定义分类和标签的基本步骤:

步骤 1: 定义自定义分类类型(Taxonomy)

首先,你需要定义一个新的自定义分类类型。这通常在主题的 functions.php 文件中完成,或者在一个专门的插件中。

function create_custom_taxonomy() {
    // 设置标签(label)和其他参数
    $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' ),
    );

    // 参数数组
    $args = array(
        'hierarchical'      => true, // 如果是false,则类似于标签
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'genre' ),
    );

    // 注册taxonomy
    register_taxonomy( 'genre', array( 'post' ), $args );
}

// 添加到WordPress初始化动作中
add_action( 'init', 'create_custom_taxonomy', 0 );

步骤 2: 创建自定义标签(Non-hierarchical Taxonomy)

如果你想要创建一个类似于WordPress内置标签的自定义标签,你可以设置 hierarchical 参数为 false

function create_custom_tag() {
    // 设置标签(label)和其他参数
    $labels = array(
        'name'                       => _x( 'Tags', 'taxonomy general name' ),
        'singular_name'              => _x( 'Tag', 'taxonomy singular name' ),
        'search_items'               => __( 'Search Tags' ),
        'popular_items'              => __( 'Popular Tags' ),
        'all_items'                  => __( 'All Tags' ),
        'parent_item'                => null,
        'parent_item_colon'          => null,
        'edit_item'                  => __( 'Edit Tag' ),
        'update_item'                => __( 'Update Tag' ),
        'add_new_item'               => __( 'Add New Tag' ),
        'new_item_name'              => __( 'New Tag Name' ),
        'separate_items_with_commas' => __( 'Separate tags with commas' ),
        'add_or_remove_items'        => __( 'Add or remove tags' ),
        'choose_from_most_used'      => __( 'Choose from the most used tags' ),
        'not_found'                  => __( 'No tags found.' ),
        'menu_name'                  => __( 'Tags' ),
    );

    // 参数数组
    $args = array(
        'hierarchical'          => false,
        'labels'                => $labels,
        'show_ui'               => true,
        'show_admin_column'     => true,
        'update_count_callback' => '_update_post_term_count',
        'query_var'             => true,
        'rewrite'               => array( 'slug' => 'tag' ),
    );

    // 注册taxonomy
    register_taxonomy( 'tag', array( 'post' ), $args );
}

// 添加到WordPress初始化动作中
add_action( 'init', 'create_custom_tag', 0 );

注意事项:

  • 在上述代码中,'post' 是指定自定义分类法应该与哪种类型的帖子相关联的参数。如果你想要与自定义帖子类型(Custom Post Type)关联,你需要替换为自定义帖子类型的名称。
  • register_taxonomy() 函数的第一个参数是taxonomy的名称,它应该是一个小写的、仅包含字母数字字符和下划线的字符串。
  • 你可以通过添加更多参数来自定义taxonomy的行为,例如设置它是否可以添加到菜单中、是否显示在管理列中,以及如何重写URL等。

在将这些代码添加到你的 functions.php 文件或插件后,你需要在WordPress的管理面板中刷新页面,然后你就可以看到新的分类和标签选项了。

相关文章

在WordPress主题开发中,如何使用wp_nav_menu()函数来自定义菜单?
如何使用the_post()函数在WordPress主题中循环显示文章?
在WordPress插件开发中,如何创建自定义数据库表?
如何使用WordPress的wp_nav_menu()函数自定义菜单输出?
在WordPress插件开发中,如何使用选项API来保存和获取插件设置?
如何使用WordPress的the_post()函数在主题中循环输出内容?