是的,您不需要自定义分类法,但需要课程的自定义帖子类型,可能还需要课程类别的自定义分类法。
在WordPress中,post类型是特定类型信息的容器:每种信息类型都是post类型。
E、 g.帖子是一种类型,而页面是另一种类型。每个帖子类型(容器)都包含一些信息:作者、标题、日期、摘要(摘录)。。。如果需要其他自定义信息(如年龄跨度),可以使用custom post fields.
之后,您可以使用分类法对这些容器进行分组。WordPress有两个分类法(组),用于对标准帖子类型进行分组:类别和标记。
创建自己的帖子类型时,还可以创建自定义分类法,并使用它们对帖子进行分组。可以使用核心分类法对CPT(自定义帖子类型)进行分组,但在大多数情况下,最好为自定义帖子类型定义自定义分类法。
要创建CPT或自定义分类法,您不需要插件:在functions.php
主题文件或您可以使用的插件register_post_type
和register_taxonomy
分别创建CPT和分类法。
CPT和自定义分类法都有一个选项hierachical
.
设置为时true
对于CPT,它会创建一个类似于标准页面的帖子类型,其中一篇帖子可以有一个父级,在countrary上,如果设置为false,它会创建一个类似于标准帖子类型的帖子,其中帖子不能有父级。为分级和非分级帖子类型创建的UI非常相似。
分级自定义分类法与类别非常相似,非分级自定义分类法与post标记相似。WordPress为层次分类法和非层次分类法生成的UI是不同的:在编辑帖子屏幕中,您可以使用复选框选择层次分类法术语,非层次分类法是使用具有自动建议功能的文本字段选择的。
关于您的案例,典型的代码示例可以是:
function courses_with_cats() {
$course_labels = array(
\'name\' => \'Courses\',
\'singular_name\' => \'Course\',
\'add_new\' => \'Add New\',
\'add_new_item\' => \'Add New Course\',
\'edit_item\' => \'Edit Course\',
\'new_item\' => \'New Course\',
\'all_items\' => \'All Courses\',
\'view_item\' => \'View Course\',
\'search_items\' => \'Search Courses\',
\'not_found\' => \'No Course found\',
\'not_found_in_trash\' => \'No Courses found in Trash\',
\'parent_item_colon\' => \'\',
\'menu_name\' => \'Courses\'
);
$course_args = array(
\'labels\' => $course_labels,
\'public\' => true,
\'publicly_queryable\' => true,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'query_var\' => true,
\'rewrite\' => array( \'slug\' => \'course\' ),
\'capability_type\' => \'post\',
\'has_archive\' => \'courses\',
\'hierarchical\' => false,
\'menu_position\' => null,
\'supports\' => array(\'title\',\'editor\',\'author\',\'thumbnail\',\'excerpt\', \'comments\')
);
$course_cat_labels = array(
\'name\' => \'Courses Category\',
\'singular_name\' => \'Course Category\',
\'search_items\' => \'Search Category\',
\'all_items\' => \'All Categories\',
\'parent_item\' => \'Parent Category\',
\'parent_item_colon\' => \'Parent Category:\',
\'edit_item\' => \'Edit Category\',
\'update_item\' => \'Update Category\',
\'add_new_item\' => \'Add New Category\',
\'new_item_name\' => \'New Category Name\',
\'menu_name\' => \'Courses Category\',
);
$course_cat_args = array(
\'hierarchical\' => true,
\'labels\' => $labels,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'query_var\' => true,
\'rewrite\' => array(\'slug\' => \'courses/category\'),
);
register_post_type( \'course\', $course_args );
register_taxonomy( \'courses-cat\', array(\'course\'), $course_cat_args );
}
add_action( \'init\', \'courses_with_cats\' );
使用自己的自定义分类法注册post类型只需此代码。此代码使用分层自定义分类法(如标准类别)注册非分层帖子类型(如标准帖子)。
使用此标准设置,课程档案的url类似于:http://example.com/courses/
. 使用http://example.com/courses/category/a-category
显示了所有课程的档案,这些课程属于带有“a-category”的类别(类别名称可能是“a-category”)。
在Codex中查找可用于两者的参数register_post_type
和register_taxonomy
.
对于register_post_type
请注意supports
参数更改编辑后屏幕中显示的内容。