今回、任意のタイミングで注文のステータスを自作したステータスに変更したかったので、変更する方法です。

スポンサーリンク

はじめに

今回やりたいこと

任意のタイミングで注文のステータスを変更します。

制作環境 / テスト環境

  • WooCommerce 2017/12/2時点の最新です。

コード

変更するには、下記のコードでできるようです。

// $order_idには、変更する注文のIDを入れてください。
// 'my-status'には、変更するステータスのスラッグを入れます。

$order = wc_get_order( $order_id );
$order -> update_status( 'my-status' );

実際に使うには、functions.phpなどに任意のタイミング(トリガー)で、これを実行します。

チェックアウトで注文送信時に、変更する場合は、こんな感じで。

function my_change_status ( $order_id )
{
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'my-status' );
}
add_action( 'woocommerce_thankyou', 'my_change_status', 10, 1 );

デフォルトステータスの一覧

抜けてる箇所などあるかもしれませんが、こんな感じでしょうか、、

ステータス名Slug

Pendding Payment
支払い待ち

pendding
Processing
処理中
processing
On Hold
入金待ち
on-hold
Completed
完了
completed
Cancelled
キャンセル
cancelled
Refunded
払い戻し
refunded
Failed
失敗
failed

 

まとめ

これで、フォーム送信時にステータス変更などもできそうです。

ちなみに、

$order->get_status()

で、今の注文ステータスが取得できるようなので、「XXXのステータスの時のみ変更する」などもできそうです。

 

参考にさせていただきました


スポンサーリンク

カテゴリー : 未分類