插件与设置加载顺序(WooCommerce依赖项)

时间:2018-11-20 作者:Canelo Digital

我正在开发一个依赖Woocommerce的插件,它可以正常工作,还有一个设置页面,它的行为很古怪,抛出了一个类“WC\\u settings\\u page”,没有找到致命错误

if ( !defined( \'ABSPATH\' ) ) {exit;}

if ( !class_exists( \'WooCommerce_Chilexpress_Tags_Settings\' ) ) {

   class WooCommerce_Chilexpress_Tags_Settings extends WC_Settings_Page{
   ...
   }

   function my_plugin_add_settings() {
      return new WooCommerce_Chilexpress_Tags_Settings();
   }
}

add_filter( \'woocommerce_get_settings_pages\', \'my_plugin_add_settings\', 15 );
此代码位于includes/mysettings中。在插件初始化期间加载的php,按字母顺序是woocommerce chilexpress etiquetas,因此应该在woocommerce之后加载

出于一个我还不明白的原因,我的插件设置总是在WooCommerce设置之前加载,尽管这给我带来了一个PHP致命错误:

PHP Fatal error:  Class \'WC_Settings_Page\' not found
最明显的问题是将WC\\U Settings\\u页面代码插入到我自己的设置中。我现在正试图清理这个,但不知怎么的,它不会工作。。。

所以(是的,我知道的非常广泛)的问题是:我会错过什么?

1 个回复
SO网友:Remzi Cavdar

请参见工作示例:https://gist.github.com/bekarice/34aaeda2d4729ef87ad7
您应该这样做:

// If this file is called directly, abort.
defined(\'ABSPATH\') or exit();


if ( !class_exists( \'WooCommerce_Chilexpress_Tags_Settings\' ) ) {

    function my_plugin_add_settings() {

        class WooCommerce_Chilexpress_Tags_Settings extends WC_Settings_Page {
            // Your class and your code / logic 
        }

        return new WooCommerce_Chilexpress_Tags_Settings();

    }

    add_filter( \'woocommerce_get_settings_pages\', \'my_plugin_add_settings\', 15 );

}

结束

相关推荐