为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:覆盖插件类方法

PHP:覆盖插件类方法

PHP
月关宝盒 2021-11-26 14:50:35
我目前正在使用一个允许自定义结账流程的插件,cartflows-pro。我需要在结帐中添加一些详细信息并覆盖类方法。我试图覆盖类方法,但从未调用扩展的子类。在我的插件中调用的操作add_action( 'cartflows_pro_init', function() {    if ( class_exists( 'Cartflows_Pro_Variation_Product' ) )    {        class Cartflows_Pro_Variation_Product_overriden extends Cartflows_Pro_Variation_Product {            public function single_sel_variation_product_markup( $current_product, $single_variation, $type = '' ) {                               // some custom code                return $output;            }        }        Cartflows_Pro_Variation_Product::get_instance();    } } );要覆盖的插件:class Cartflows_Pro_Variation_Product {    private static $instance;    public static function get_instance() {        if ( ! isset( self::$instance ) ) {            self::$instance = new self();        }        return self::$instance;    }    public function __construct() {        add_action( 'cartflows_add_before_main_section', array( $this, 'product_variation_option_position' ) );    }    function product_variation_option_position( $output ) {                // some code        $output .= $this->single_sel_variation_product_markup( $current_product, $single_variation );                return $output;        }    function single_sel_variation_product_markup( $current_product, $single_variation, $type = '' ) {                // some code                return $output;            }}Cartflows_Pro_Variation_Product::get_instance();父类文件在另一个类中调用    function include_required_class() {        include_once CARTFLOWS_PRO_CHECKOUT_DIR . 'classes/class-cartflows-pro-variation-product.php';    }如何覆盖该方法?如果我在加载之前扩展类,它会抛出一个错误,所以我必须调用'cartflows_pro_init'钩子。如果我调用new Cartflows_Pro_Variation_Product_overriden(); It's working 但我得到输出代码显示两次 1 与正常代码(父)和 1 与自定义代码(子)如果我打电话,new Cartflows_Pro_Variation_Product(); 我会得到基本输出代码显示两次 2 没有自定义代码的输出如果我调用Cartflows_Pro_Variation_Product::get_instance(); 它什么都不做知道我应该如何覆盖该方法吗?我真的不知道如何自动加载。
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

只是为了更新这个问题。

我没有成功覆盖该方法,所以我尝试以另一种方式进行

我通过ajax添加我需要的数据并直接输出它来解决它!


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信