我正在开发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 
    });
}
 我希望这对某人有所帮助。