我正在开发Wordpress Woocommerce插件。在我的本地环境中,它工作得很好,但我在将插件添加到prod环境的副本时遇到了问题。我是wordpress新手,对web开发不是很熟悉(我是Java程序员)。
在插件文件中,我实例化了Woocommerce插件包中的一个类,如下所示:
$coupon = new WC_Coupon($some_code);
在本地环境(php 5.4.10、Woocommerce 2.0.13、Wordpress 3.6)中,这很好。在生产环境(php 5.4.10、Woocommerce 1.6.5.2、Wordpress 3.4.2)中,我有以下错误:
Fatal error: Class \'WC_Coupon\' not found
我尝试了包含定义WC\\U优惠券类的文件,但随后错误变为
Fatal error: Cannot redeclare class WC_Coupon
那么,使用另一个插件中声明的类的正确方法是什么呢?
注意:升级目前不是一个选项。
最合适的回答,由SO网友:gmazzap 整理而成
您必须检查该类是否存在,但在此之前,您必须等待所有插件都已加载:没有人可以确保您的插件在WooCommerce之后加载。
用于在所有插件加载到钩子时从插件运行代码plugins_loaded
钩
请注意,您不能在主题中使用此钩子,因为当主题加载时,该钩子已经被触发。
add_action(\'plugins_loaded\', \'my_coupon_init\');
function my_coupon_init() {
if ( class_exists(\'WC_Coupon\') ) {
$coupon = new WC_Coupon($some_code);
// some code here
} else {
add_action(\'admin_notices\', \'wc_not_loaded\');
}
}
function wc_not_loaded() {
printf(
\'<div class="error"><p>%s</p></div>\',
__(\'Sorry cannot create coupon because WooCommerce is not loaded\')
);
}
SO网友:jameshwart lopez
这已经太晚了,但我想分享如何使用woocommerce及其类,而不必找不到错误类。
首先是检查woocommerce is installed 并使用woocommerce_loaded
行动挂钩。
/**
* Check if WooCommerce is active
**/
if ( in_array( \'woocommerce/woocommerce.php\', apply_filters( \'active_plugins\', get_option( \'active_plugins\' ) ) ) ) {
// Put your plugin code here
add_action(\'woocommerce_loaded\' , function (){
//Put your code here that needs any woocommerce class
//You can also Instantiate your main plugin file here
});
}
我希望这对某人有所帮助。