WordPress自定义插件add_menu_page提示文件找不到求助
WordPress后台菜单“File not found”问题解决思路
问题根源:
add_menu_page的slug参数不是用来填文件路径的,WordPress会把它当作后台路由标识,而非实际文件路径。你直接写includes/my-first-page.php,WordPress会去匹配这个路由,而非加载对应文件,自然会报错。修复步骤:
- 把slug改成纯标识字符串,比如
my-plugin-main-page,别带路径和后缀 - 给
add_menu_page指定一个回调函数,在回调里手动加载目标页面文件 - 调整后的示例代码:
function my_Add_My_Admin_Link() { add_menu_page( '我的插件页面', // 页面标题 '我的插件', // 后台菜单显示名称 'manage_options', // 访问权限 'my-plugin-main-page', // 纯slug标识 'my_plugin_load_page', // 回调函数 'dashicons-admin-tools', // 菜单图标(可选) 5 // 菜单排序位置(可选) ); } add_action( 'admin_menu', 'my_Add_My_Admin_Link' ); // 回调函数负责加载页面文件 function my_plugin_load_page() { // 先做权限校验,防止非法访问 if ( !current_user_can( 'manage_options' ) ) { wp_die( '你没有权限访问此页面' ); } // 加载同目录下的页面文件 require_once plugin_dir_path( __FILE__ ) . 'my-first-page.php'; } - 路径说明:因为
functions.php在includes目录里,plugin_dir_path(__FILE__)会返回这个目录的绝对路径,所以直接写my-first-page.php就能找到同目录的文件。
- 把slug改成纯标识字符串,比如
额外排查点:
- 确认
my-first-page.php文件确实存在,文件名拼写完全一致(Linux服务器要注意大小写) - 检查文件权限,确保服务器有读取该文件的权限
- 确认
内容的提问来源于stack exchange,提问作者user813813
相关产品推荐
相关产品推荐

