WordPress创建自定义分类法

WordPress注册一个名为“课程”的自定义分类法。

把以下代码放到主题的 functions.php 文件中

/*
* 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://
*/ 
 function wporg_register_taxonomy_course()
 {
     $labels = [
         'name'              => _x('Courses', 'taxonomy general name'), // ('我的自定义分类', 'taxonomy general name'),
 'singular_name'     => _x('Course', 'taxonomy singular name'),  // ('我的自定义分类项', '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 = [
 'hierarchical'      => true, // make it hierarchical (like categories)  使其具有层次结构(如类别)
 'labels'            => $labels,
 'show_ui'           => true, //是否在后台显示UI 
 'show_admin_column' => true, // 是否在文章列表显示该分类法列 
 'query_var'         => true, // 是否允许通过查询字符串访问该分类法 
 'rewrite'           => ['slug' => 'course'], // URL重写规则
 ];
 register_taxonomy('course', ['post'], $args);
 }
 add_action('init', 'wporg_register_taxonomy_course');

下面是要把课程分类显示在发布文章页右侧

在WordPress后台的文章发布页显示多个自定义分类,这通常涉及到前端界面(admin panel)的自定义和可能的代码调整。由于WordPress的核心功能已经支持在文章发布页显示多个分类(针对内置的“分类”功能),但如果你指的是自定义分类法(taxonomy),那么你可能需要通过一些额外的步骤来实现。

把以下代码放到主题的 functions.php 文件中

/** 纯代码WordPress后台发布页右侧显示多个分类 **/
// 使用add_meta_box()函数来添加自定义的元框(meta box)。
add_action('add_meta_boxes', 'add_custom_taxonomy_metabox');

function add_custom_taxonomy_metabox() {
    add_meta_box(
        'custom_taxonomy_metabox', // 唯一ID
        '自定义分类', // 标题
        'render_custom_taxonomy_metabox', // 回调函数
        'post', // 文章类型
        'side', // 位置
        'high' // 优先级
    );
}

function render_custom_taxonomy_metabox($post) {
    // 获取当前文章的ID
    $post_id = $post->ID;

    // 自定义分类法的名称(或slug),这里假设是'course'
    $taxonomy = 'course';

    // 渲染自定义分类法的复选框列表
    wp_terms_checklist($post_id, array(
        'taxonomy' => $taxonomy, // 自定义分类法的名称
        'descendant_select' => true, // 允许选择子项
        'selected_cats' => wp_get_object_terms($post_id, $taxonomy, array('fields' => 'ids')), // 获取当前已选中的项
        'popular_cats' => false, // 不显示热门项
        'walker' => null, // 使用默认的walker
        'checked_ontop' => false, // 不将已选中的项放在顶部
        'class' => '', // 额外的HTML类
        'style' => '', // 额外的内联样式
        'echo' => 1 // 是否直接输出HTML,设置为1表示输出
    ));

    // 如果需要,您可以在这里添加更多的HTML代码或JavaScript
}