Wordpress 扩展一个商业管理类

Wordpress 扩展一个商业管理类,wordpress,woocommerce,Wordpress,Woocommerce,我试图扩展一个WooCommerce类,该类涉及Wordpress管理接口。我目前正试图通过扩展类来更改类中的一个函数。我正在尝试: if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) { add_action('plugins_loaded', "overwrite_woocommerce"); } function overwrite_woocommerce() { class Extend_WC_A

我试图扩展一个WooCommerce类,该类涉及Wordpress管理接口。我目前正试图通过扩展类来更改类中的一个函数。我正在尝试:

if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
  add_action('plugins_loaded', "overwrite_woocommerce");
}

function overwrite_woocommerce() {
  class Extend_WC_Admin_Permalink_Settings extends WC_Admin_Permalink_Settings{
    public function settings_save() {
        // Stuff that happens
    }
  }
}
但是在尝试了加载的插件和admin init钩子之后,两者似乎都不起作用。直接在plugin文件夹中编辑WooCommerce类可以获得我想要的结果

我正在尝试从函数中删除这些行:

if ( '/%product_cat%/' === trailingslashit( $product_base ) ) {
    $product_base = '/' . _x( 'product', 'slug', 'woocommerce' ) . $product_base;
}
这个函数解析为

update_option( 'woocommerce_permalinks', $permalinks );

最终我可以使用update_选项挂钩,问题是如果将“/%product_cat%/”设置为自定义URL基础,WooCommerce将强制“/product/”作为基础,这使我无法知道原始值是否是“/%product_cat%/”,因为它是在挂钩触发之前设置的。因此,我首先要扩展该类。

我认为您无法做到这一点。我不知道你是来自Prestashop还是Joomla,当覆盖核心/模块文件很常见时,但在WP中,你最好的办法是分析你试图覆盖的部分,看看它是否有任何钩子,以使其按你想要的方式工作


如果这个答案还不够,那么就把你想要改变的部分贴出来,我们会告诉你是否还有其他方法可以改变这个问题。我知道我可以使用钩子,并附加了原始问题,指出了会导致什么问题。我正在寻找一个合适的钩子或方法来扩展WC_Admin_Permalink_Settings类。我已经扩展了很多其他Wordpress插件类,但是没有一个属于管理部分。答案是在你编辑之前给出的,我不明白你到底想更改函数的哪一部分。