概要
woocommerce_order_status_$STATUS_TRANSITION[to]
は、WooCommerceの特定の注文件名の状態が変わるときに実行されるフックです。このフックは、特定の状態に遷移する注文を処理する際に非常に便利です。主に以下のような機能を実装する際に使用されます。
- 注文が「完了」になったときの処理
- 注文が「キャンセル」されたときの処理
- 返金が行われたときの通知
- 顧客へのメール通知のカスタマイズ
- 注文の状態変更に伴う在庫管理
- カスタムレポートやダッシュボードウィジェットの更新
構文
add_action( 'woocommerce_order_status_$STATUS_TRANSITION[to]', 'your_function_name', 10, 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 |