WooCommerce的 woocommerce_api_(action) Action 钩子可以让插件添加一个自定义回调到一个 URL 上面,当这个 URL 被访问的时候,自定义回调中的函数或方法就会执行,这个 API 在 WooCommerce支付网关中会经常用到,除了支付网关,当WooCommerce与第三方服务交互需要接收第三方服务返回的数据时,我们也需要用到这个 API。关于这个 API 的详细信息可参考 WC_API 类文档。
回调 URL 的形式
在WooCommerce2.0 以前,我们可以用类似下面的网址访问自定义回调 URL。
http://yoursite.com/?wc-api=CALLBACK
在WooCommerce2.0 以后, 除了上面带参数的 URL,我们还可以以静态化的方式访问我们的回调。
http://yoursite.com/wc-api/CALLBACK/
添加一个自定义 URL
我们可以通过类似下面的代码添加一个自定义回调 URL:
add_action( 'woocommerce_api_callback', 'callback_handler' );
注意上面的钩子名称 “woocommerce_api_callback” 中的 “callback” 字符,这个就是我们自定义回调,独一无二的名称,会显示在 URL 参数里面,获取自定义回调 URL 的时候也需要用到这个名称。
执行完回调里面定义的操作之后,WooCommerce会退出操作,当然,如果需要,我们也可以在退出操作之前跳转到其他 URL。
获取自定义回调 URL
我们可以通过一个 WC() 实例的一个方法获取上面自定义自定义的回调 URL。
WC()->api_request_url( 'wc_ezship_send_order' )
我们可以在开发 WooCommerce支付网关或者其他服务的时候,通过上面的方法来获取自定义回调 URL 的地址。