查询Woocommerce REST API触发产品增删改的可用action钩子
WooCommerce REST API 专属触发钩子解决方案
一、内置专属钩子(推荐,无需额外判断)
WooCommerce 本身为REST API操作提供了专属的action钩子,仅在通过REST API发起请求时触发,完全符合你的需求:
- 产品创建/更新触发钩子:
woocommerce_rest_insert_product
该钩子会在REST API调用完成产品创建、更新操作后触发,自带三个参数:$product:产品对象$request:当前REST请求对象$creating:布尔值,true为新建产品,false为更新现有产品
示例代码:
add_action( 'woocommerce_rest_insert_product', function ( $product, $request, $creating ) { $product_id = $product->get_id(); // 你的业务逻辑 }, 99, 3 ); - 产品删除触发钩子:
woocommerce_rest_delete_product
该钩子仅在REST API调用删除产品后触发,示例代码:add_action( 'woocommerce_rest_delete_product', function ( $product, $request ) { $product_id = $product->get_id(); // 你的业务逻辑 }, 99, 2 );
二、通用兼容方案(适配自定义业务场景)
如果你需要沿用原有wp_insert_post的逻辑,仅增加API请求判断,可以用WooCommerce内置的wc_rest_is_api_request()函数识别当前请求是否为REST API请求,示例代码:
add_action( 'wp_insert_post', function ( $post_id, \WP_Post $post, $updated ) { // 仅处理产品类型且是WC REST API请求时执行 if ( $post->post_type !== 'product' || ! wc_rest_is_api_request() ) { return; } // 你的业务逻辑 }, 99, 3 );
三、自定义钩子扩展
如果内置钩子无法满足你的特殊需求,WooCommerce REST API的所有端点控制器都支持自定义动作注入,你可以在对应端点的处理逻辑中通过do_action()自定义专属钩子,按需触发。
内容的提问来源于stack exchange,提问作者Negant
相关产品推荐
相关产品推荐

