覆盖 WooCommerce 中的挂钩函数
Overriding a hooked in function in WooCommerce
覆盖 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 中的函数?
提前致谢
第一个选项是正确的:在你的主函数挂钩在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 文件或任何插件文件。
覆盖 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 中的函数?
提前致谢
第一个选项是正确的:在你的主函数挂钩在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 文件或任何插件文件。