首页 / 插件开发手册 / 分类法 Taxonomies / 使用自定义分类法

使用自定义分类法

分类法简介

要了解什么是分类法(taxonomy)以及它们的作用,请阅读分类法简介。

 

自定义分类法

随着分类系统的发展,“类别”(category)和“标签”(tag)不是很结构化,因此开发人员创建自己的分类系统可能是有益的。

WordPress允许开发人员创建自定义分类法。当人们想要创建不同的命名系统并以可预测的方式在后台访问它们时,自定义分类法非常有用。

 

为什么使用自定义分类法

你可能会问,“既然我可以按类别和标签进行组织,为什么还要创建自定义分类法?”

好吧,让我们举个例子。假设我们有一个客户是厨师,她希望你创建一个网站,在那里她将展示原创食谱。

组织网站的一种方法可能是创建一个名为“Recipes”(食谱)的自定义文章类型来存储她的食谱。然后创建一个分类法“Courses”(课程),将“Appetizers”(开胃菜)和“Desserts”(甜品)分开,最后创建一个分类法“Ingredients”(配料),将“Chicken”(鸡肉)和“Chocolate”(巧克力)菜分开。

这些组可以使用类别或标签来定义,你可以有一个“课程”类别,其中子类别为“开胃菜”和“甜品”,还有一个“配料”类别,其中子类别为每种配料。

使用自定义分类法的主要优点是,您可以独立于类别和标签引用“课程”和“配料”。他们甚至在管理区有自己的菜单。

此外,创建自定义分类允许您构建自定义界面,这将简化客户的生活,并使插入数据的过程直观到其业务性质。

现在想象一下,这些自定义分类和接口是在插件中实现的,你刚刚建立了自己的食谱插件,可以在任何WordPress网站上重用。

 

示例:课程分类

下面的示例将向您展示如何创建一个插件,该插件将自定义分类“Courses”添加到默认的post文章类型。注意,添加自定义分类的代码不必在自己的插件中,如果需要,它可以包含在主题中或作为现有插件的一部分。

在尝试创建自己的插件之前,请确保阅读插件基础一章。

 

第一步:开始之前

转到文章 > 写文章页面,你会注意到你只有类别和标签。

No Custom Taxonomy Meta Box (Yet)

 

第2步:创建新插件

使用init动作钩子为文章类型“post”注册分类“course”。

/*
* 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步:检查结果

激活你的插件,然后转到文章 > 写文章。您应该会看到一个新的元组框用于“Courses”分类。

courses_taxonomy_post_screen

 

代码分解

下面的讨论分解了上面描述函数和参数的代码。

函数wporg_register_taxonomy_course包含注册自定义分类所需的所有步骤。

$labels数组包含自定义分类的标签。
这些标签将用于显示在管理区域中有关分类的各种信息。

$args数组包含在创建自定义分类法时使用的配置选项。

函数register_taxonomy()使用$args数组进行配置,为post文章类型创建一个标识符为course的新分类法。

函数add_action()wporg_register_taxonomy_course函数执行与init动作挂钩联系起来。

 

$args

$args数组为自定义分类法提供了重要配置,它指示WordPress分类法应该如何工作。

查看register_taxonomy()函数以获得接受参数的完整列表以及每个参数的作用。

 

总结

在我们的课程分类示例中,WordPress将自动为course分类创建存档页和子页。

归档页面将位于/course/,子页面使用分类项(term)的slug(/course/%%term-slug%%/)在其下生成。

 

使用分类法

WordPress有许多函数,用于与自定义分类法和其中的分类项(term)进行交互。

以下是一些示例:

  • the_terms:接受一个分类参数,并将分类项呈现在列表中。
  • wp_tag_cloud:接受一个分类参数并呈现分类项的标签云。
  • is_taxonomy:允许您确定给定的分类是否存在。