概要
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]
アクションを利用して、さまざまなアクションを実行する方法を示しています。各コードの利用シーンを参考にして、必要に応じてカスタマイズできます。