我读过关于钩子和动作的书,我知道当我们看到do_action(\'some_hook\')
这意味着某处add_action(\'some_hook\', function() {...});
或功能some_hook()
存在于主题的functions.php
.
但这是什么?!:
从…起woocommerce/includes/class-wc-checkout.php 第943行:
public function process_checkout() {
try {
/////////////
do_action( \'woocommerce_before_checkout_process\' ); <----!!!
if ( WC()->cart->is_empty() ) {
throw new Exception( sprintf( __( \'Sorry, your session has expired. <a href="%s" class="wc-backward">Return to shop</a>\', \'woocommerce\' ), esc_url( wc_get_page_permalink( \'shop\' ) ) ) );
}
do_action( \'woocommerce_checkout_process\' ); <-----!!!
我找不到
woocommerce_checkout_process
和
woocommerce_before_checkout_process
文件中的任何位置!他们是做什么的?
最合适的回答,由SO网友:Dave Romsey 整理而成
有可能在不使用的情况下提供动作挂钩,这就是这里发生的情况。
woocommerce_before_checkout_process
和woocommerce_checkout_process
是WooCommerce提供的挂钩,但WooCommerce本身并不将回调函数附加到这些挂钩中的任何一个。它们允许插件和主题在触发相应挂钩时运行代码。
如果要将函数附加到woocommerce_checkout_process
hook(例如),您可以将以下代码添加到主题或插件中:
add_action( \'woocommerce_checkout_process\', \'wpse_woocommerce_checkout_process\' );
function wpse_woocommerce_checkout_process() {
// Do something...
}
此代码将在线路调用时运行
do_action( \'woocommerce_checkout_process\' );
在WooCommerce中执行。