我想修改一个名为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' ) );
有关如何删除和替换此操作的任何想法?
答案 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'