プラグインWooCommerceのwoocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to]アクションの使用方法・解説

概要

woocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to]は、WooCommerceの特定の注文ステータスが変更された際にトリガーされるフックです。このアクションは、指定された注文があるステータスから他のステータスに遷移する時に発動します。例えば、注文が「処理中」から「完了」に変更される場合などが含まれます。

このアクションは、以下の機能を実装する際に非常に役立ちます:
1. 注文ステータスが変更されたときに通知を送信する。
2. メール送信をカスタマイズする。
3. テレビやモバイルデバイスへのプッシュ通知を実装する。
4. 外部システムへのWebhookを関連付ける。
5. クーポンコードの使用や報酬ポイントを atribureする。
6. データベースのログに注文の状態変更を記録する。

構文

add_action('woocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to]', 'your_function_name', 10, 2);

パラメータ

  • $order_id: 状態が変更された注文のID。
  • $order: WC_Orderオブジェクト。

戻り値

このアクションは戻り値を返しません。指定された処理を実行することが目的です。

使用可能なプラグインWooCommerceのバージョン

このアクションはWooCommerce 2.0以降で使用可能です。

ワードプレスのバージョン

WordPress 4.0以降で互換性があります。

この関数のアクションでの使用可能性

アクション名 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード1: ステータス変更通知を送信

add_action('woocommerce_order_status_completed_to_processing', 'send_order_update_email', 10, 2);
function send_order_update_email($order_id, $order) {
    wp_mail('customer@example.com', 'Your order has been updated', 'Your order is now processing.');
}

このコードは、注文が「完了」から「処理中」に変わった際に、顧客にメールを送信します。

サンプルコード2: ステータス変更時にログを記録

add_action('woocommerce_order_status_pending_to_completed', 'log_order_status_change', 10, 2);
function log_order_status_change($order_id, $order) {
    error_log("Order #{$order_id} status changed to completed.");
}

このコードは、注文が「保留中」から「完了」に変更された際に、その変更をエラーログに記録します。

サンプルコード3: クーポンの使用を許可

add_action('woocommerce_order_status_processing_to_completed', 'allow_coupon_usage', 10, 2);
function allow_coupon_usage($order_id, $order) {
    // クーポンの再利用を許可します
    foreach ($order->get_used_coupons() as $coupon) {
        $coupon_data = new WC_Coupon($coupon);
        $coupon_data->set_free_shipping(true);
        $coupon_data->save();
    }
}

このコードは、注文が「処理中」から「完了」に変更された際に、使用されたクーポンに対して送料無料を適用します。

サンプルコード4: 外部APIへの通知を送信

add_action('woocommerce_order_status_completed_to_processing', 'notify_external_api', 10, 2);
function notify_external_api($order_id, $order) {
    $api_url = 'https://example.com/api/notify';
    wp_remote_post($api_url, ['body' => ['order_id' => $order_id]]);
}

このコードは、注文が「完了」から「処理中」に変更されたときに外部APIへ通知を送ります。

サンプルコード5: リワードポイントの追加

add_action('woocommerce_order_status_completed', 'add_reward_points', 10, 1);
function add_reward_points($order_id) {
    // リワードポイントを追加するロジック
    $reward_points = 100; // 例として100ポイント追加
    // ポイント追加の処理をここに記入
}

このコードは、注文が「完了」になった際に顧客にリワードポイントを追加します。

これらのサンプルコードは、woocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to]アクションを利用して、さまざまなアクションを実行する方法を示しています。各コードの利用シーンを参考にして、必要に応じてカスタマイズできます。

この関数について質問する


上の計算式の答えを入力してください