WordPress(以下wp)とWooCommerce(以下wc)で、オンラインショップを作る下記でのメモ。
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() が重要。
これしないと保存されない。