【问题标题】:Woocommerce remove an action hookWoocommerce 移除一个动作钩子
【发布时间】:2015-05-19 20:35:12
【问题描述】:

我在我的 wordpress 网站中使用 woocommerce 插件。我想删除一个名为“woocommerce_checkout_coupon_form”的函数,该函数与操作“woocommerce_before_checkout_form”挂钩。

我尝试在我的主题functions.php中添加以下代码

add_action('init','remove_coupon_text',10);
function remove_coupon_text() {
    remove_action('woocommerce_before_checkout_form','woocommerce_checkout_login_form',10);
} 

但这不起作用。有什么想法吗?

【问题讨论】:

  • 对不起,这是我的错误。我使用了错误的函数名。我打算删除的函数名称是“woocommerce_checkout_coupon_form”。该问题现已修复。

标签: php wordpress woocommerce


【解决方案1】:

对不起,这是我的错误。我使用了错误的函数名。我打算删除的函数名称是“woocommerce_checkout_coupon_form”。该问题现已修复。

【讨论】:

    【解决方案2】:

    试试这个

    remove_all_actions( $tag, $priority );
    

    【讨论】:

    • 你能补充一些解释吗?
    • if remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart',10);不起作用,那么您可以尝试 remove_all_actions( 'woocommerce_after_shop_loop_item', 10 );
    【解决方案3】:

    尝试提高优先级。

    remove_action('woocommerce_before_checkout_form','woocommerce_checkout_login_form',1 - 10);
    

    编辑:遵循下面的 cmets,不要按原样使用它,我的意思是增加优先级是逐渐增加优先级,直到它匹配添加功能的时间,当它匹配时您将自动看到结果,否则它将无法正常工作。谢谢大家说清楚。

    【讨论】:

    • Codex 说:“要删除挂钩,$function_to_remove$priority 参数必须在添加挂钩时匹配。” codex.wordpress.org/Function_Reference/remove_action
    • 这实际上意味着如果文件以正确的方式加载,则具有相同的优先级,即 woocommerce wc_hooks.php 在您的函数之前加载。但是,如果您的文件在 woocommerce 之前以某种方式加载,然后 woocommerce 再次添加该操作,那么在这种情况下,具有相同优先级的操作不会删除该操作。因此,在这种情况下删除操作的解决方案将是增加请求的优先级。不知道它是否适合您的场景,但这就是优先级参数应该做的事情。
    • 钩子的优先级对应于全局$wp_filter数组中的一个数字键。 remove_action 中的优先级必须相同才能取消设置目标键值对。
    • 这个答案通过显示一个重要错误和评论者更正它来增加有价值的信息。
    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 2019-10-31
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多