首页 > 解决方案 > woocommerce_order_status_completed 没有数据

问题描述

我为 woocommerce_order_status_completed 创建了一个 webhook,当订单完成时,这个钩子会成功触发。

问题是除了 ID 之外,我没有从已完成的订单中获得任何数据。响应显示如下。

{"action":"woocommerce_order_status_completed","arg":1640} 

标签: wordpresswoocommercewebhookshook-woocommercewordpress-rest-api

解决方案


我用这个代码制作了一个插件来解决这个问题:

function set_resource_for_webhook_payload_by_webhook_id($target_webhook_id, 
$desired_resource) {


add_filter('woocommerce_webhook_resource', function($resource, $webhook_id) use 
($target_webhook_id, $desired_resource) {
if($webhook_id == $target_webhook_id) {
        return $desired_resource;
    }
    return $resource;
}, 10, 2);


add_filter('woocommerce_valid_webhook_events', function($valid_events) use ($target_webhook_id) {
    try {
        $topic = wc_get_webhook($target_webhook_id)->get_topic();

        list($resource, $event) = explode('.', $topic);

        if(!empty($event)) {
            $valid_events[] = $event;
        }

        return $valid_events;

    } catch (Exception $e) {
        return $valid_events;
    }
}, 10);

}
//Replace number (3) bellow with your webhook ID:
add_action('init', function(){
set_resource_for_webhook_payload_by_webhook_id(3, 'order');
});

希望它可以帮助任何人。


推荐阅读