使用自定义分类
分类法简介
要了解什么是分类法以及它们的作用,请阅读分类法介绍。
自定义分类法
随着分类系统的发展,“类别”和“标签”结构化程度不高,因此开发人员创建自己的类别可能会有所帮助。
WordPress 允许开发人员创建自定义分类法。当人们想要创建不同的命名系统并以可预测的方式在幕后访问它们时,自定义分类法很有用。
为什么使用自定义分类法?
您可能会问,“既然我可以按类别和标签进行组织,为什么还要费心创建自定义分类法呢?”
好吧……让我们举个例子。假设我们有一位厨师客户,她希望您创建一个网站,在该网站上展示她的原创食谱。
组织网站的一种方法可能是创建一个名为“食谱”的自定义帖子类型来存储她的食谱。然后创建一个分类法“课程”以将“开胃菜”与“甜点”分开,最后创建一个分类法“成分”以将“鸡肉”与“巧克力”菜肴分开。
这些组_可以_使用类别或标签来定义,您可以有一个“课程”类别,其中包含“开胃菜”和“甜点”的子类别,以及一个“成分”类别,其中包含每种成分的子类别。
使用自定义分类法的主要优点是您可以独立于类别和标签引用“课程”和“成分”。他们甚至在管理区域有自己的菜单。
此外,创建自定义分类法允许您构建自定义界面,这将简化您的客户的生活,并使插入数据的过程直观地符合他们的业务性质。
现在想象一下,这些自定义分类法和接口是在一个插件中实现的;您刚刚构建了自己的 Recipes 插件,可以在任何 WordPress 网站上重复使用。
示例:课程分类
以下示例将向您展示如何创建一个插件,该插件将自定义分类法“课程”添加到默认的post
帖子类型。请注意,添加自定义分类法的代码不必在其自己的插件中;如果需要,它可以包含在主题中或作为现有插件的一部分。
在尝试创建您自己的插件之前,请务必阅读插件基础章节。
第 1 步:开始之前
转到帖子 > 添加新页面。您会注意到您只有类别和标签。
第 2 步:创建新插件
使用操作挂钩为帖子类型“帖子”注册分类法“课程” init
。
/*
* Plugin Name: Course Taxonomy
* Description: A short example showing how to add a taxonomy called Course.
* Version: 1.0
* Author: developer.wordpress.org
* Author URI: https://codex.wordpress.org/User:Aternus
*/
function wporg_register_taxonomy_course() {
$labels = array(
'name' => _x( 'Courses', 'taxonomy general name' ),
'singular_name' => _x( 'Course', 'taxonomy singular name' ),
'search_items' => __( 'Search Courses' ),
'all_items' => __( 'All Courses' ),
'parent_item' => __( 'Parent Course' ),
'parent_item_colon' => __( 'Parent Course:' ),
'edit_item' => __( 'Edit Course' ),
'update_item' => __( 'Update Course' ),
'add_new_item' => __( 'Add New Course' ),
'new_item_name' => __( 'New Course Name' ),
'menu_name' => __( 'Course' ),
);
$args = array(
'hierarchical' => true, // make it hierarchical (like categories)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => [ 'slug' => 'course' ],
);
register_taxonomy( 'course', [ 'post' ], $args );
}
add_action( 'init', 'wporg_register_taxonomy_course' );
第 3 步:查看结果
激活您的插件,然后转到Posts > Add New。您应该会看到一个新的“课程”分类法元框。
代码分解
下面的讨论分解了上面使用的描述功能和参数的代码。
该函数wporg_register_taxonomy_course
包含注册自定义分类法所需的所有步骤。
该$labels
数组包含自定义分类法的标签。
这些标签将用于在管理区域中显示有关分类法的各种信息。
该$args
数组包含创建自定义分类法时将使用的配置选项。
函数register_taxonomy()使用数组创建一个新的分类法,其中包含用于配置的帖子类型course
的 标识符。post``$args
函数add_action()wporg_register_taxonomy_course
将函数执行与动作挂钩 联系起来init
。
$参数
$args 数组包含自定义分类法的重要配置,它指示 WordPress 分类法应该如何工作。
查看register_taxonomy() 函数以获取可接受参数的完整列表以及每个参数的作用。
概括
在我们的课程分类法示例中,WordPress 将自动为分类法创建存档页面和子页面course
。
存档页面将/course/
使用 Term 的 slug ( /course/%%term-slug%%/
) 在其下生成子页面。
使用你的分类法
WordPress 有许多功能可以与您的自定义分类法及其中的术语进行交互。
这里有些例子:
-
the_terms
:采用分类法参数并在列表中呈现术语。 -
wp_tag_cloud
:采用分类法参数并呈现术语的标签云。 -
is_taxonomy
:允许您确定给定的分类法是否存在。