如何覆盖Woocommerce中的class-wc-gateway-bacs.php文件

时间:2014-08-07 08:27:36

标签: php wordpress woocommerce

我有关于覆盖woocommerce / includes / gateway / bacs / class-wc-gateway-bacs.php中文件的问题

我已编辑此文件并添加了一些其他字段并更改了展示位置顺序。为了尝试使用我的版本,我尝试了以下位置:

  • mytheme / woocommerce / includes / gateways / bacs / class-wc-gateway-bacs.php
  • mytheme / woocommerce / includes / gatewayways / class-wc-gateway-bacs.php
  • mytheme / woocommerce / includes / bacs / class-wc-gateway-bacs.php

以上所有地点均无效。在我之前的工作中,我通过在/ templates /文件夹中放置重载来成功地覆盖了woo-commerce中的一些文件,但是这次更复杂。

我不想替换原始文件,以防止在更新插件时覆盖自定义编辑。

有没有办法覆盖它?

1 个答案:

答案 0 :(得分:3)

您好Mosak我认为您的工作方向错误。由于扩展了Woocommerce支付网关,您无法覆盖处理模板的插件类,但您应该创建自己的插件,将您的代码挂钩到woocommerce用于识别已注册支付网关的过滤器。

add_action('plugins_loaded', 'init_my_gateway_class');

function init_my_gateway_class() {
    add_filter('woocommerce_payment_gateways', 'add_this_class_to_gateway_class');

    /**
    * @param array $methods
    * @return string
    */
    function add_this_class_to_gateway_class($methods){
        $methods[] = 'WC_My_Gateway';
        return $methods;
    }

    class WC_My_Gateway extends WC_Payment_Gateway{
       /**
        * Here you can create your own payment gateway
        * defining the specs on the constructor.
        **/
    }
}

WC_My_Gateway类假设可能是您对原始bacs类的定制,保持兼容性并使原始bacs类保持活动状态。