覆盖WooCommerce中的钩子函数

时间:2017-07-06 01:15:53

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

覆盖到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中挂钩的函数?

提前致谢

1 个答案:

答案 0 :(得分: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文件中,或者放在任何插件文件中。