You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Custom Post Type设为WPTutor LMS插件的顶级菜单?

解决方法:将Course自定义文章类型设为WPTutor LMS的顶级菜单

要把Course的列表页面设为插件顶级菜单,同时移除原插件主页面,需要调整自定义文章类型(CPT)的注册参数,再手动注册顶级菜单指向CPT列表页,具体操作如下:

1. 调整Course CPT的注册参数

注册CPT时,设置show_in_menu为false,阻止WordPress自动将其添加到现有菜单中:

function wptutorlms_register_course_cpt() {
    $args = array(
        'public'       => true,
        'label'        => 'Courses',
        'show_ui'      => true,
        'show_in_menu' => false, // 禁用WP自动添加菜单
        'supports'     => array('title', 'editor', 'thumbnail'),
        // 其他CPT配置参数(比如rewrite、has_archive等)
    );
    register_post_type( 'course', $args );
}
add_action( 'init', 'wptutorlms_register_course_cpt' );

2. 手动注册顶级菜单指向CPT列表

使用add_menu_page创建顶级菜单,直接链接到Course的列表页面(edit.php?post_type=course):

function wptutorlms_add_top_level_menu() {
    // 添加顶级菜单
    add_menu_page(
        'WPTutor LMS Courses', // 后台页面标题
        'WPTutor LMS',         // 左侧菜单显示的标题
        'manage_options',      // 访问该菜单所需的权限
        'edit.php?post_type=course', // 菜单跳转的URL(CPT列表页)
        '',                    // 回调函数留空,因为直接跳转至现有页面
        'dashicons-welcome-learn-more', // 菜单图标(选适合LMS的Dashicon)
        6                      // 菜单位置(6在"文章"之后,"媒体"之前)
    );

    // 如果之前注册过插件主菜单,用下面的代码移除它
    // remove_menu_page('your-old-main-menu-slug');
}
add_action( 'admin_menu', 'wptutorlms_add_top_level_menu' );

关键说明

  • 之前设置无效的原因:当你设置show_in_menu => 'wptutorlms'时,WordPress默认会把该CPT作为指定顶级菜单的子项添加,而非替换成顶级菜单。
  • 权限调整:如果不需要manage_options这么高的权限,可以自定义权限(比如edit_courses),确保只有指定角色能访问。
  • 菜单位置:数字越小,菜单在左侧越靠前,可根据需求调整(比如5是"文章"的位置,10是"媒体")。

内容的提问来源于stack exchange,提问作者Kaushal Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:33:26