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.
之类的东西
我正在努力完全按照标题所说的去做,其中一个最新版本已从这里更改:
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.
之类的东西