1

覆盖 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 );

如果我编写以下代码,则该函数将被取消挂钩

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 中钩住的函数?

提前致谢

4

1 回答 1

1

第一个选项是正确的:在您的 main 函数挂钩中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 文件中或任何插件文件中。

于 2017-07-06T07:53:43.940 回答