修改WooCommerce按国家定价插件报unexpected ‘public’语法错误求助
错误原因
- 你添加的代码本身存在语法缺失:自定义函数末尾缺少闭合大括号
},函数定义不完整 - 你修改的
class-wcpbc-frontend-pricing.php是PHP类定义文件,不可以在类结构内部直接声明全局函数、调用add_filter,你插入的代码打断了原类的结构,原文件第68行的public是类方法的修饰关键字,前面未闭合的代码导致PHP解析到该关键字时判定为非法语法。
解决方法
方案1(推荐,不会被插件更新覆盖修改)
不要修改插件原生代码,将修正后的完整代码添加到你当前使用的WordPress主题的functions.php文件末尾即可,代码如下:
add_filter( 'woocommerce_get_price_html', 'country_geolocated_based_hide_price', 10, 2 ); function country_geolocated_based_hide_price( $price, $product ) { // 实例化WooCommerce地理定位类 $geo_instance = new WC_Geolocation(); // 获取用户IP对应的地理信息 $user_geodata = $geo_instance->geolocate_ip(); // 获取用户所属国家代码 $country = $user_geodata['country']; // 目标国家返回空价格,其他国家返回正常价格 return $country == 'GB' ? '' : $price; }
将代码中的GB替换为你需要隐藏价格的目标国家代码即可,操作前先将你修改过的插件文件恢复为原版,清除站点缓存后即可生效。
方案2(仅适合必须在插件内实现功能的场景)
如果需要保留在插件内修改的逻辑,需要遵循PHP类的编码规范,将自定义方法定义为类的成员方法,在类的初始化阶段注册过滤器,不要直接在类结构中间插入零散代码。操作前务必先备份原插件文件,避免修改错误导致站点持续崩溃。
内容的提问来源于stack exchange,提问作者marine
相关产品推荐
相关产品推荐

