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
相关产品推荐
相关产品推荐

