【问题标题】:Overriding a hooked in function in WooCommerce覆盖 WooCommerce 中的挂钩函数
【发布时间】:2017-07-06 01:15:53
【问题描述】:

覆盖 WordPress 中的函数的过程是什么?

wc-template-functions.php 中的以下函数是我希望重写的函数之一:

function woocommerce_template_loop_product_link_close() {
    echo '</a>';
}

它挂在wc-template-hooks.php

add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );

如果我写下面的代码,那么函数就会unhooked

function remove_default_wc_behaviour() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
}

add_action( 'init', 'remove_default_wc_behaviour' );

但是,如果我想重写该函数怎么办,即。实现我自己的功能而不是 WooCommerce 的默认功能?

我会先调用remove_action(),然后用add_action() 挂钩我的函数,还是有一个程序可以简单地覆盖我的WooCommerce 中挂钩的函数?

提前致谢

【问题讨论】:

  • 你所做的绝对正确....就是这样
  • 谢谢 :) 随意发布它作为答案,我会将其标记为正确的
  • 没关系,伙计......很高兴听到一切正常,每个人都在遵循代码结构。

标签: php wordpress woocommerce hook-woocommerce woocommerce-theming


【解决方案1】:

第一个选项是正确的:在 init 动作钩子中挂钩的主函数中,您可以添加替换挂钩函数:

add_action( 'init', 'replace_default_wc_behaviour' );
function remove_default_wc_behaviour() {
    // remove the default behavior
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );

    // Replace by your custom behavior
    add_action( 'woocommerce_after_shop_loop_item', 'custom_WC_loop_product_link_close', 5 );
    function custom_WC_loop_product_link_close() {
        // Do your custumizations

        // add the close tag
        echo '</a>';
    }
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 2018-10-09
    • 2011-02-08
    • 2016-10-29
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多