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

WordPress主题调用自定义PHP类提示Class not found报错如何解决

解决方案
  • 第一步:给自定义Product类添加命名空间声明
    打开inc/woocommerce/Product.php文件,在代码最顶部(<?php之后的第一行)添加命名空间声明:

    <?php
    namespace inc\woocommerce; // 新增这一行
    
    class Product {
    
        protected $query;
    
        public $name;
        public $sku;
        public $price;
    
    
        public function __construct( $id ) {
    
            $this->query = wc_get_product( $id );
    
            $this->name          = $this->query->get_name();
            $this->sku           = $this->query->get_sku();
            $this->price         = $this->query->get_price();
        }
    
    }
    

    你调用类时指定了inc\woocommerce命名空间,但类本身没有声明对应命名空间,是触发类找不到报错的核心原因之一。

  • 第二步:引入类文件(二选一即可)
    方法1:手动引入(适合小型项目,无需额外配置)
    在taxonomy-product_cat.php文件顶部,新增引入代码:

    <?php
    require_once get_template_directory() . '/inc/woocommerce/Product.php';
    

    方法2:配置自动加载(适合中大型项目,类文件较多时使用)
    如果你的项目使用Composer管理依赖,在根目录composer.json中添加PSR-4自动加载规则:

    "autoload": {
        "psr-4": {
            "inc\\": "inc/"
        }
    }
    

    配置完成后执行composer dump-autoload生成自动加载文件,同时确保主题的functions.php中已经引入了Composer自动加载文件:

    require_once get_template_directory() . '/vendor/autoload.php';
    
  • 第三步:优化实例化代码
    你注释掉的use语句可以取消注释简化写法,同时注意WordPress的文章ID属性为大写ID,避免小写id取值异常:

    global $product_query;
    
    use inc\woocommerce\Product;
    
    foreach ( $product_query->posts as $product ) {
        new Product( $product->ID );
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:18:03