我写了一个简单的插件,在WooCommerce中对缩略图执行一些逻辑。这个插件大约工作了一年,直到客户端切换到一个新的主题。现在插件已不再有效,我已将问题缩小到remove_action()
失败。
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
if (! remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10) ) {
echo 'FAILED to remove action<br/>';
}
/**
* WooCommerce Loop Product Thumbs
**/
if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}
我不知道这是因为加载了插件的顺序,还是因为WooCommerce的更改而导致调用不正确。我已经阅读了一些主题,表明remove_action()
应该遵循我的自定义add_action()
,因此我相应地撤销了相应的顺序。它无论如何都不起作用 - remove_action()
总是返回FALSE。
我一整天都在撞墙,试图解决这个问题。任何人都可以给我一个确定的方法来执行删除,或者调试它的方法吗?
感谢。
答案 0 :(得分:0)
尝试将[add / remove] _action()的优先级标志更改为更高的值,例如90。
如果没有看到主题实际在做什么,就有点难以猜测!
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 90);
if (! remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 90) ) {
echo 'FAILED to remove action<br/>';
}