在类的构造函数中添加的WordPress remove_action

时间:2017-11-06 03:16:08

标签: wordpress woocommerce

我想修改一个名为WooCommerce智能优惠券的插件。该插件在结帐页面上创建了一个小表单,我想在不同的位置。

我发现这个类修改了我想删除的动作的表单(并用另一个动作替换):

class WC_SC_Purchase_Credit {

    /**
     * Variable to hold instance of WC_SC_Purchase_Credit
     * @var $instance
     */
    private static $instance = null;

    public function __construct() {

        # some stuff 

        add_action( 'woocommerce_checkout_after_customer_details', array( $this, 'gift_certificate_receiver_detail_form' ) );

        # some stuff 

当我这样做时,它告诉我变量$ this is undefined

remove_action( 'woocommerce_checkout_after_customer_details', array( $this, 'gift_certificate_receiver_detail_form' ) );

当我这样做时,它告诉我找不到课程

$test123 = new WC_SC_Purchase_Credit();
remove_action( 'woocommerce_checkout_after_customer_details', array( $test123, 'gift_certificate_receiver_detail_form' ) );

有关如何删除和替换此操作的任何想法?

2 个答案:

答案 0 :(得分:1)

$this是指在类构造中调用的类。你没有在构造中调用它,这就是为什么$this不起作用的原因。您需要将$this替换为包含您尝试取消挂钩的功能的类名:

<?php
remove_action( 'woocommerce_checkout_after_customer_details', array( 'WC_SC_Purchase_Credit', 'gift_certificate_receiver_detail_form' ) );

答案 1 :(得分:0)

它的解决方案是获取对象的实例:WC_SC_Purchase_Credit :: get_instance()

>>> re.search(r'(?<!\$)2017', text).group()
'2017'