【问题标题】:How to create a status check on a schedule? API Woocommerce 3+如何按计划创建状态检查? API Woocommerce 3+
【发布时间】:2018-06-26 11:11:30
【问题描述】:

发送外部送货服务的订单后,我想设置对其状态的检查。如果他的状态发生了变化,请在 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。

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

【问题讨论】:

    标签: php wordpress woocommerce woocommerce-rest-api


    【解决方案1】:

    对于您的问题的第一部分,我建议使用一个名为 WP Crontrol 的插件。您可以创建一个 cron 作业以使用您的交付服务 API 调用函数。

    您需要创建一个规则以允许每 15 分钟执行一次 cron。前往 Settings->Cron Schedules 添加 15 分钟间隔规则。在 Tools->Cron Events 中添加一个 cron 作业。给它一个钩子名称和一个动作。如果需要,您还可以包含转到您的函数的参数。

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

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

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

    【讨论】:

      【解决方案2】:

      更新订单状态

      $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

      【讨论】:

        猜你喜欢
        • 2016-07-20
        • 1970-01-01
        • 2012-12-14
        • 1970-01-01
        • 1970-01-01
        • 2020-06-24
        • 2011-07-29
        • 1970-01-01
        • 2021-03-30
        相关资源
        最近更新 更多