WooCommerce的 woocommerce_api_(action) Action 鉤子可以讓插件添加一個自定義回調(diào)到一個 URL 上面,當這個 URL 被訪問的時候,自定義回調(diào)中的函數(shù)或方法就會執(zhí)行,這個 API 在 WooCommerce支付網(wǎng)關(guān)中會經(jīng)常用到,除了支付網(wǎng)關(guān),當WooCommerce與第三方服務(wù)交互需要接收第三方服務(wù)返回的數(shù)據(jù)時,我們也需要用到這個 API。關(guān)于這個 API 的詳細信息可參考 WC_API 類文檔。
回調(diào) URL 的形式
在WooCommerce2.0 以前,我們可以用類似下面的網(wǎng)址訪問自定義回調(diào) URL。
http://yoursite.com/?wc-api=CALLBACK
在WooCommerce2.0 以后, 除了上面帶參數(shù)的 URL,我們還可以以靜態(tài)化的方式訪問我們的回調(diào)。
http://yoursite.com/wc-api/CALLBACK/
添加一個自定義 URL
我們可以通過類似下面的代碼添加一個自定義回調(diào) URL:
add_action( 'woocommerce_api_callback', 'callback_handler' );
注意上面的鉤子名稱 “woocommerce_api_callback” 中的 “callback” 字符,這個就是我們自定義回調(diào),獨一無二的名稱,會顯示在 URL 參數(shù)里面,獲取自定義回調(diào) URL 的時候也需要用到這個名稱。
執(zhí)行完回調(diào)里面定義的操作之后,WooCommerce會退出操作,當然,如果需要,我們也可以在退出操作之前跳轉(zhuǎn)到其他 URL。
獲取自定義回調(diào) URL
我們可以通過一個 WC() 實例的一個方法獲取上面自定義自定義的回調(diào) URL。
WC()->api_request_url( 'wc_ezship_send_order' )
我們可以在開發(fā) WooCommerce支付網(wǎng)關(guān)或者其他服務(wù)的時候,通過上面的方法來獲取自定義回調(diào) URL 的地址。


