如何在Woocommerce中重写class-wc-gateway-bacs.php文件

如何在Woocommerce中重写class-wc-gateway-bacs.php文件,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我在重写woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php中的文件时遇到问题 我编辑了这个文件,添加了一些其他字段,并更改了放置顺序。我已尝试在以下位置使用我的版本: mytheme/woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php mytheme/woocommerce/includes/gateways/class-wc-gateway-bacs.p

我在重写woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php中的文件时遇到问题

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

  • mytheme/woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php
  • mytheme/woocommerce/includes/gateways/class-wc-gateway-bacs.php
  • mytheme/woocommerce/includes/bacs/class-wc-gateway-bacs.php
上述地点都不起作用。在我以前的工作中,我成功地通过在/templates/文件夹中放置重载来覆盖woo commerce中的一些文件,但这次更复杂

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


有没有办法覆盖它

你好,莫萨克,我认为你的工作方向不对。由于要扩展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类保持活动状态。

太棒了!谢谢你,gadz82我现在就来。。如果有什么问题,我很快就会回来。再次感谢..你能看看我的代码有什么问题吗?它似乎不起作用&没有覆盖我正在处理的文件。我的主要原因是我有一个额外的数组字段用于bacs帐户详细信息&重命名标签。因此,我唯一的选择是覆盖模板中的文件,而不触及插件的核心。