如何按计划创建状态检查? API Woocommerce 3+

How to create a status check on a schedule? API Woocommerce 3+

为外部配送服务发送订单后,我想检查其状态。如果他的状态发生了变化,那么在 Woocommerce 中进行更改。

我已设置将订单数据发送到外部递送服务。

add_action('woocommerce_thankyou', 'send_order_to_shiping');
function send_order_to_shiping( $order_id ){
    $order = wc_get_order( $order_id );

    $order_data = $order->get_data();

    // Get order details
    $parametr['sale_amount'] = $order_data['discount_total'];
    $parametr['street'] = $order_data['billing']['address_1'];
    $parametr['home'] = $order_data['billing']['address_2'];

    $order_id = $order_data['id'];

    foreach ($parametr as $key => $value){ 
        $data .= "&parametr[".$key."]=".$value."";
    } 

    // Send data
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://app.example.com/api/index.php?new_order");
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($ch);
    curl_close($ch);

    echo $result;
}

当我发送订单(示例 ID 555)时,我得到了答复 echo $result;: id_order 来自送货服务 - 7273896。

echo $result; 显示:

{"result":"success","order_id":7273896,"order_number":10}

所以我在 Woocommerce 中有订单 ID - 555,在送货服务中有订单 ID 7273896。

从逻辑上讲,我需要将其保存在订单元数据中,并使用该数据单独进行状态检查。

对于你的问题的第一部分,我建议使用一个名为 WP Crontrol 的插件。您可以创建一个 cron 作业来调用您的送货服务 API 的功能。

您需要创建一个规则以允许每 15 分钟执行一次 cron。转到“设置”->“Cron 计划”以添加 15 分钟的间隔规则。在工具->Cron 事件中添加一个 cron 作业。给它一个钩子名称和一个动作。如果需要,您还可以包含用于函数的参数。

在 functions.php 中,将新的 cron 作业的匹配代码添加到 运行。这是一个例子:

add_action( 'check_status_hook', 'checkStatusAction' );
function checkStatusAction ($args) {
    //run your code here or call it from here
}

您问题的第 2 部分...我无法提供任何帮助。我没有在 WooCommerce 工作过,甚至不知道订单状态的设置位置,或者您是否可以简单地更改单个状态值而不会打乱其他东西。

更新订单状态

$order = new WC_Order( $parametr['order_id'] );

$order->update_status('wc-cancelled');

可以从以下位置检索订单状态概览 https://docs.woocommerce.com/wc-apidocs/source-function-wc_get_order_statuses.html#88-106