woocommerce_template_loop_product_thumbnail上的remove_action失败

时间:2014-05-01 03:29:16

标签: wordpress wordpress-plugin hook woocommerce

我写了一个简单的插件,在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。

我一整天都在撞墙,试图解决这个问题。任何人都可以给我一个确定的方法来执行删除,或者调试它的方法吗?

感谢。

1 个答案:

答案 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/>';
}