我正在钩住woocommerce_product_set_stock
钩子。我是否有办法找出它是由新订单触发的,还是总的来说,是获取钩子的来源?我想区分通过新订单设置的新产品数量和在管理面板中手动更新的数量。
谢谢!
答案 0 :(得分:0)
作为解决方案
您可以分析stacktrace(文件名,函数名,钩子名称)
然后相应地编写逻辑
add_action( 'woocommerce_product_set_stock', function() {
$function = 'do_action';
$hook = 'woocommerce_product_set_stock';
$file_1 = ABSPATH . 'wp-content/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php';
$file_2 = ABSPATH . 'wp-content/plugins/woocommerce/includes/wc-stock-functions.php';
$backtrace = debug_backtrace();
foreach ( $backtrace as $backtrace_item ) {
if ( $backtrace_item['file'] !== $file_1 ) {
continue;
}
if ( $backtrace_item['function'] !== $function ) {
continue;
}
if ( empty( $backtrace_item['args'] ) ) {
continue;
}
if ( $backtrace_item['args'][0] !== $hook ) {
continue;
}
// ... Your logic
}
} );
代码段尚未经过测试。看起来像作品。