wordpress发布文章右侧分类面板

wordpress发布文章右侧分类面板

方法一:

// wordpress发布文章右侧分类面板
function my_add_category_metabox() {
    add_meta_box(
        'my_category_metabox', // 唯一标识
        '文章分类', // 标题
        'my_category_metabox_callback', // 回调函数
        'post', // 屏幕
        'side', // 区域
        'high' // 优先级
    );
}

function my_category_metabox_callback($post) {
    // 获取所有分类
    $post_categories = wp_get_post_terms($post->ID, 'category', array('fields' => 'ids'));
    $args = array(
        'taxonomy'       => 'category',
        'selected_cats'  => $post_categories,
        'popular_cats'   => false,
        'walker'         => null,
        'checked_ontop'  => false,
        'number'         => null,
        'echo'           => 1,
        'class'          => 'categorychecklist form-no-clear',
        'hierarchical'   => 0, // 显示为平面列表,而非树状结构
        'id'             => 'my_category_checklist',
    );

    // 调用wp_terms_checklist,但请注意,这实际上是复选框列表
    wp_terms_checklist($post->ID, $args);

    // 注意:如果您真的需要一个下拉框样式的多选,您可能需要使用JavaScript或jQuery来创建自定义的UI组件。
    // 下面的代码是一个简化的示例,说明如何可能通过JavaScript实现这一点,但这不是WordPress内置的功能。

    // <script type="text/javascript">
    //     // 这里可以添加JavaScript代码来将复选框列表转换为下拉框样式的多选组件
    // </script>
}

// 确保在正确的钩子上调用此函数
if (is_admin() && !empty($_GET['post']) && get_post_type($_GET['post']) == 'post') {
    add_action('add_meta_boxes', 'my_add_category_metabox');
}

方法一修改后:


/*
Plugin Name: Custom Post Category Metabox
Description: Adds a custom category metabox to the post editor.
Version: 1.0
Author: Your Name
*/

function custom_add_category_metabox() {
    add_meta_box(
        'custom_category_metabox', // 唯一标识
        '文章分类', // 标题
        'custom_category_metabox_callback', // 回调函数
        'post', // 屏幕
        'side', // 区域
        'high' // 优先级
    );
}
add_action('add_meta_boxes', 'custom_add_category_metabox');

function custom_category_metabox_callback($post) {
    // 获取当前文章的分类 ID 数组
    $post_categories = wp_get_post_terms($post->ID, 'category', array('fields' => 'ids'));

    $args = array(
        'taxonomy'       => 'category',
        'selected_cats'  => $post_categories,
        'popular_cats'   => false,
        'walker'         => null,
        'checked_ontop'  => false,
        'number'         => null,
        'echo'           => false, // 不直接输出,便于后续处理
        'class'          => 'categorychecklist form-no-clear',
        'hierarchical'   => 0, // 显示为平面列表,而非树状结构
        'id'             => 'custom_category_checklist',
    );

    $checklist_html = wp_terms_checklist($post->ID, $args);

    // 输出 HTML
    echo $checklist_html;
}