【问题标题】:WooCommerce Smart Coupons override "available coupons" positionWooCommerce 智能优惠券覆盖“可用优惠券”位置
【发布时间】:2016-08-26 11:18:57
【问题描述】:

我正在使用带有 WooCommerce 2.6.4 和 Smart Coupon 3.1.2 插件的 Wordpress 4.6。 我想将结帐页面顶部的“可用优惠券”部分移至底部。

在插件文件中,我检测到了这种结构以及需要更改的操作。

我需要将其更改为“woocommerce_after_checkout_form”,但我不知道如何从 functions.php 文件中覆盖它。

我已经尝试直接从插​​件中更改它,它可以像我一样工作,但我们都知道编辑插件的行为是错误的方法。

任何帮助和文档都会很有帮助。

class WC_Smart_Coupons {

  ...

   public function __construct() {

    ...

    add_action( 'woocommerce_before_checkout_form', array(  $this, 'show_available_coupons_before_checkout_form' ), 11 );

    ...

   }
}

...

function initialize_smart_coupons() {
    $GLOBALS['woocommerce_smart_coupon'] = new WC_Smart_Coupons();
}
add_action( 'plugins_loaded', 'initialize_smart_coupons' );

【问题讨论】:

  • 这是我迄今为止通过检查文档所做的,但它不起作用:function remove_plugin_actions(){ global $WC_Smart_Coupons; remove_action( 'woocommerce_before_checkout_form', array( $WC_Smart_Coupons, 'show_available_coupons_before_checkout_form' ), 11 ); } add_action('woocommerce_before_checkout_form','remove_plugin_actions');

标签: php wordpress function woocommerce overriding


【解决方案1】:

所以,我今天遇到了类似的问题。您可以执行以下操作将该部分移动到不同的位置。

删除:

remove_action( 'woocommerce_before_checkout_form', array(  $GLOBALS['woocommerce_smart_coupon'], 'show_available_coupons_before_checkout_form' ), 11 );

添加:

add_action( 'any_action', array(  $GLOBALS['woocommerce_smart_coupon'], 'show_available_coupons_before_checkout_form' ), 11 );

【讨论】:

  • 太棒了,亚兰伯!我尝试使用传统文档作为参考,但无法使其工作。您的解决方案反而有效!谢谢,您保存了插件更新(也许还有更多,我什至会在其他人身上尝试这种方法)。 :)
  • 很高兴它也对您有所帮助。 :)
  • 您知道为什么这在 WooCommerce Smart Coupons v 4.7.0 中不起作用吗?奇怪的是,即使我编辑 /plugins/woocommerce-smart-coupons/includes/class-sc-display-coupons.php 并删除或修改构造函数中的所有操作,它仍然出现在结帐时?
【解决方案2】:

接受的解决方案不适用于我使用的智能优惠券版本 (4.12.2)。

要更改“可用优惠券”位置,请改用以下命令:

$obj_inst = WC_SC_Display_Coupons::get_instance();
remove_action( 'woocommerce_before_checkout_form', array(  $obj_inst, 'show_available_coupons_before_checkout_form' ), 11 );
add_action( 'woocommerce_checkout_after_customer_details', array(  $obj_inst, 'show_available_coupons_before_checkout_form' ), 11 );

可以在here 找到漂亮的 woocommerce 结帐页面挂钩列表。

【讨论】: