WordPress 自定义分类(Taxonomies)及其应用
提到分类系统,WordPress 里面使用了两种模式,即目录(categories)和标签(tags),我们在创建内容的时候基本上都需要借助这两个分类方式对内容进行分类和管理。WordPress 提供了目录和标签的分类机制,那为什么还需要自定义分类(taxonomies),而且什么时候需要自定义分类呢。我们曾在上一篇文章里介绍了自定义内容类型,其实原因是一样的,就是当需要细化、细分类别管理的时候就可以建立用户自定义分类。
WordPress 建立用户自定义分类需要先了解两个定义和概念:
Taxonomies:就是分类模式的另一种称呼;Terms:就是分类名称的另一种称呼。
创建用户自定义的分类可以用在缺省的内容类型上(比如文章、页面),也可以用在自定义内容类型上(比如课程、产品),主要根据需求来选择。下面以课程内容类型为例,介绍自定义分类的创建方法:
function register_taxonomy_program()
{
$labels = [
'name' => _x('Programs', '分类名'),
'singular_name' => _x('Program', '单数分类名'),
'search_items' => __('Search Programs'),
'all_items' => __('All Programs'),
'parent_item' => __('Parent Program'),
'parent_item_colon' => __('Parent Program:'),
'edit_item' => __('Edit Program'),
'update_item' => __('Update Program'),
'add_new_item' => __('Add New Program'),
'new_item_name' => __('New Program Name'),
'menu_name' => __('Program'),
];
$args = [
'hierarchical' => true, // 是否支持分级
'labels' => $labels,
'show_ui' => true, // 是否使用管理界面管理分类名称(term)
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'program'],
];
register_taxonomy('program', ['my_course'], $args); //关联课程内容类型
}
add_action('init', 'register_taxonomy_program');
使用 register_taxonomy 函数来注册用户自定义分类,并把分类同课程内容类型进行关联,当创建和编辑课程内容的时候就可以使用 “编程” 这个分类了。用户自定义分类建议放在插件里面实现,这样可以比较独立,而且使用也灵活。