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

WordPress自定义主题报错:Class 'INFOCUS_THEME\Inc\Menus'未找到

提问内容

我正跟随Codeytek学院Imran Sayed的WordPress教程实现WordPress构建菜单后注入HTML的功能,已参考该教程播放列表的第22、23、24集内容适配到自有项目中。
我完全复刻了教程的代码、文件夹/文件结构,引入了对应类、助手函数、单例模式和自动加载逻辑,且已将所有位置的文本域从教程的aquila修改为项目对应的infocus,但每次运行代码都触发如下报错:

Fatal error: Uncaught Error: Class 'INFOCUS_THEME\Inc\Menus' not found in /home/will/Local Sites/karenkeyinfocus/app/public/wp-content/themes/infocus/template-parts/header/nav.php on line 13
Error: Class 'INFOCUS_THEME\Inc\Menus' not found in /home/will/Local Sites/karenkeyinfocus/app/public/wp-content/themes/infocus/template-parts/header/nav.php on line 13

目前我排查不出问题原因,怀疑是调用Menus类的代码无法找到对应类文件导致的报错,触发问题的代码如下:

<?php
$menu_class = \INFOCUS_THEME\Inc\Menus::get_instance();
$header_menu_id = $menu_class->get_menu_id( 'infocus-header-menu' );
$header_menus = wp_get_nav_menu_items( $header_menu_id );
?>

我已将完整项目代码上传至代码托管平台,恳请各位帮忙排查问题原因,提供解决方案。


解决方案
  • 检查大小写匹配
    Linux环境严格区分大小写,依次确认三点:
    1. 存放Menus类的文件夹名称是否为Inc(首字母大写),如果是全小写inc会导致命名空间匹配失败
    2. Menus类对应的文件名是否为Menus.php(首字母大写),如果命名为menus.php也会触发加载错误
    3. Menus类文件顶部的命名空间声明是否为namespace INFOCUS_THEME\Inc;,确认命名空间拼写、大小写完全一致,无多余空格或拼写错误
  • 检查自动加载逻辑
    确认主题根目录的functions.php中已经正确注册对应命名空间的自动加载规则:
    1. 确认自动加载脚本已经被正确引入,通常存在类似require_once get_template_directory() . '/inc/helpers/autoloader.php';的代码,且文件路径完全匹配
    2. 检查自动加载器的映射规则,是否将INFOCUS_THEME根命名空间映射到了正确的类文件目录,对应到主题下的inc或者Inc目录
  • 检查Menus类注册逻辑
    确认Inc目录下的核心初始化类中已经正确注册了Menus服务,没有遗漏实例化Menus类的相关代码
  • 临时验证方案
    如果排查自动加载逻辑耗时,可以先在nav.php文件顶部手动引入Menus类文件验证问题根源,示例代码:
    require_once get_template_directory() . '/Inc/Classes/Menus.php';
    
    引入后如果报错消失,即可确认是自动加载规则配置问题,再针对性调整自动加载映射规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:09:03