分类法简介

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

自定义分类法

作为分类系统,“类别”和“标签”的结构并不严谨,因此开发人员创建自己的分类法可能有益。

WordPress 允许开发人员创建自定义分类法。当需要创建独立的命名系统并以可预测的方式在幕后使其可用时,自定义分类法非常有用。

为什么要使用自定义分类法?

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

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

组织网站的一种方法是创建一个名为“食谱”的自定义文章类型来存储她的食谱。然后创建一个名为“课程”的分类法来区分“开胃菜”和“甜点”,最后创建一个名为“食材”的分类法来区分“鸡肉”和“巧克力”菜肴。

这些组可以使用类别或标签定义,你可以有一个带有“开胃菜”和“甜点”子类别的“课程”类别,以及一个带有每种食材子类别的“食材”类别。

使用自定义分类法的主要优势是你可以独立于类别和标签引用“课程”和“食材”。它们甚至在管理区域拥有自己的菜单。

此外,创建自定义分类法允许你构建自定义界面,这将简化客户的工作并使插入数据的过程符合其业务性质。

现在想象一下,这些自定义分类法和界面是在插件中实现的;你刚刚构建了自己的食谱插件,可以在任何 WordPress 网站上重复使用。

示例:课程分类法

以下示例将向你展示如何创建一个插件,该插件向默认的 post 文章类型添加自定义分类法“课程”。请注意,添加自定义分类法的代码不必位于其自己的插件中;如果希望,可以将其包含在主题或现有插件中。

请在尝试创建自己的插件之前,务必阅读 插件基础 章节。

步骤 1:开始之前

转到文章 > 添加新文章页面。你会注意到你只有类别和标签。

暂无自定义分类法元框

步骤 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_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/,子页面使用术语的 slug(/course/%%term-slug%%/)在其下生成。

使用你的分类法

WordPress 有许多函数用于与你的自定义分类法和其中的术语交互。

以下是一些示例:

  • the_terms:接受分类法参数并以列表形式渲染术语。
  • wp_tag_cloud:接受分类法参数并渲染术语的标签云。
  • is_taxonomy:允许你确定给定的分类法是否存在。