Woocommerce 积分和奖励 - 删除/添加动作以移动 render_product_message

Woocommerce Points and Rewards - remove / add action to move render_product_message

我正在努力完全按照标题所说的去做,其中一个最新版本已从这里更改:

public function __construct() {

    // add single product message immediately after product excerpt
    add_action( 'woocommerce_single_product_summary', array( $this, 'render_product_message' ) );

    // add variation message before the price is displayed
    add_action( 'woocommerce_single_product_summary', array( $this, 'add_variation_message_to_product_summary' ), 15 );

    // add the points message just before the variation price.
    add_filter( 'woocommerce_variation_price_html', array( $this, 'render_variation_message' ), 10, 2 );
    add_filter( 'woocommerce_variation_sale_price_html', array( $this, 'render_variation_message' ), 10, 2 );

    // Check for same price but variable points
    add_filter( 'woocommerce_available_variation', array( $this, 'check_for_variable_points_in_product' ) );

    // delete transients
    add_action( 'woocommerce_delete_product_transients', array( $this, 'delete_transients' ) );
}

对此:

public function __construct() {

    // add single product message immediately after product excerpt
    add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'render_product_message' ), 15 );

    // add variation message before the price is displayed
    add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_variation_message_to_product_summary' ), 25 );

    // add the points message just before the variation price.
    add_filter( 'woocommerce_variation_price_html', array( $this, 'render_variation_message' ), 10, 2 );
    add_filter( 'woocommerce_variation_sale_price_html', array( $this, 'render_variation_message' ), 10, 2 );

    add_filter( 'woocommerce_show_variation_price', '__return_true' );

    // delete transients
    add_action( 'woocommerce_delete_product_transients', array( $this, 'delete_transients' ) );
}

我试图解决第一个到 add_actions 的问题,先删除然后再插入到原来的位置。

令人恼火的是,网上几乎没有关于此的文档,所以我能够阅读的内容和插件核心/模板文件中只有一个提及,这是我粘贴的内容。

我的代码不起作用,我已将它直接添加到主题 functions.php 并尝试了多种变体,但都没有成功。以下是我到目前为止的想法...

1.

 remove_action( 'woocommerce_before_add_to_cart_button', array( $this, 'render_product_message' ), 15 );
    remove_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_variation_message_to_product_summary' ), 25 ); 

2.

remove_action( 'woocommerce_before_add_to_cart_button', 'render_product_message', 15 );
remove_action( 'woocommerce_before_add_to_cart_button', 'add_variation_message_to_product_summary', 25 );

您需要访问添加操作的 class 实例才能将其删除。

文档中的示例 2:https://codex.wordpress.org/Function_Reference/remove_action#Example

$this 在 class.

之外不起作用

您需要查看 class 是如何实例化的,以了解是否有实用的方法来访问它。您正在寻找诸如将实例设置为全局变量或使用 singleton pattern.

之类的东西