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

概要

woocommerce_order_status_$STATUS_TRANSITION[to]は、WooCommerceの特定の注文件名の状態が変わるときに実行されるフックです。このフックは、特定の状態に遷移する注文を処理する際に非常に便利です。主に以下のような機能を実装する際に使用されます。

  1. 注文が「完了」になったときの処理
  2. 注文が「キャンセル」されたときの処理
  3. 返金が行われたときの通知
  4. 顧客へのメール通知のカスタマイズ
  5. 注文の状態変更に伴う在庫管理
  6. カスタムレポートやダッシュボードウィジェットの更新

構文

add_action( 'woocommerce_order_status_$STATUS_TRANSITION[to]', 'your_function_name', 10, 1 );

パラメータ

  1. $order: 変更された注文のオブジェクト。

戻り値

このアクションは戻り値を持たず、主に副作用(主に他の処理や通知)を引き起こすために使用されます。

使用可能なバージョン

  • WooCommerce: 3.0以上
  • WordPress: 4.0以上

サンプルコード

サンプルコード 1

add_action( 'woocommerce_order_status_completed', 'send_order_completed_email' );

function send_order_completed_email( $order ) {
    $to = $order->get_billing_email();
    $subject = 'Your Order is Completed';
    $body = 'Thank you for your purchase!';
    wp_mail( $to, $subject, $body );
}

このコードは、注文が「完了」した際に、顧客に完了通知のメールを送信します。

サンプルコード 2

add_action( 'woocommerce_order_status_cancelled', 'restock_inventory_on_cancel' );

function restock_inventory_on_cancel( $order ) {
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        $product->increase_stock( $item->get_quantity() );
    }
}

このコードは、注文が「キャンセル」されたときに、関連する商品を在庫に戻します。

サンプルコード 3

add_action( 'woocommerce_order_status_refunded', 'log_order_refund' );

function log_order_refund( $order ) {
    error_log( 'Order ID ' . $order->get_id() . ' has been refunded.' );
}

このコードは、注文が「返金」されたときのログを記録します。

サンプルコード 4

add_action( 'woocommerce_order_status_pending_to_processing', 'notify_admin_of_order_processing' );

function notify_admin_of_order_processing( $order ) {
    $to = get_option( 'admin_email' );
    $subject = 'Order is now Processing';
    $body = 'Order ID ' . $order->get_id() . ' has moved to processing.';
    wp_mail( $to, $subject, $body );
}

このコードは、注文が「保留中」から「処理中」に変更されたときに、管理者に通知します。

サンプルコード 5

add_action( 'woocommerce_order_status_failed', 'handle_failed_order' );

function handle_failed_order( $order ) {
    // Failed order handling code here
    update_post_meta( $order->get_id(), '_failed_order_handled', true );
}

このコードは、注文が「失敗」した場合に、その情報をメタデータとして保存します。

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

アクション 使用例
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

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


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