WooCommerce の set_status() で更新されない!?

WordPress(以下wp)とWooCommerce(以下wc)で、オンラインショップを作る下記でのメモ。

WORDPRESS + WOOCOMMERCE + STRIPEでのオンラインショップ実装メモ

stripeでのカード決済後、ステータスが処理中になる。

これを自動で完了にしたい。

使うhookは、woocommerce_order_status_changed。

主要なとこのみ抜き出してみた。

function custom_order_status_changed($order_id, $from, $to) {

  // オーダーを取得
  $order = wc_get_order($order_id);

  // オーダーデータを取得
  $order_data = $order->get_data();

  // 決済情報
  $payment_method = $order_data['payment_method'];

  // stripeの時のみ
  if ($payment_method === 'stripe') {

    // 処理中に変更された時
    if ($to === 'processing') {
      $order->set_status('completed');
      $order->save();
    }
  }
}
add_action('woocommerce_order_status_changed', 'custom_order_status_changed', 10, 3);

ハイライトにしてある $order->save() が重要。

これしないと保存されない。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA