プラグインWooCommerceのwoocommerce_order_refundedアクションの使用方法・解説

概要

woocommerce_order_refunded アクションは、WooCommerceにおいて注文が返金された際にトリガーされるフックです。このアクションは、注文の返金処理後に実行される特定の機能をカスタマイズしたり、追加の処理を行う際に非常に便利です。以下のような機能を実装する際に頻繁に使用されます。

  1. 返金理由を記録する
  2. 顧客に返金通知を送信する
  3. 在庫を更新する
  4. 返金に依存したカスタムアクションをトリガーする
  5. 分析用に返金データをロギングする
  6. サードパーティのサービスと統合する

構文

do_action('woocommerce_order_refunded', $id, $refund_id, $refund_amount, $refund_reason);

パラメータ

  • $id (int): 返金された注文のID。
  • $refund_id (int): 返金トランザクションのID。
  • $refund_amount (float): 返金された金額。
  • $refund_reason (string): 返金の理由。

戻り値

このアクションは戻り値を持ちません。主に他の機能をトリガーするために使用されます。

互換性情報

  • WooCommerce バージョン: 3.0.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_refunded', 'log_refund_reason', 10, 4);
function log_refund_reason($id, $refund_id, $refund_amount, $refund_reason) {
    error_log("Order ID: $id, Refund ID: $refund_id, Amount: $refund_amount, Reason: $refund_reason");
}

このコードは、返金された注文とその理由をエラーログに記録します。

サンプルコード2: 顧客への返金通知を送信

add_action('woocommerce_order_refunded', 'send_refund_notification', 10, 4);
function send_refund_notification($id, $refund_id, $refund_amount, $refund_reason) {
    $order = wc_get_order($id);
    $to = $order->get_billing_email();
    $subject = 'Your Order Has Been Refunded';
    $message = "Your order #$id has been refunded. Amount: $refund_amount. Reason: $refund_reason.";
    wp_mail($to, $subject, $message);
}

このコードは、返金が完了した後、顧客に返金のメール通知を送信します。

サンプルコード3: 在庫を返金額分だけ戻す

add_action('woocommerce_order_refunded', 'restock_inventory', 10, 4);
function restock_inventory($id, $refund_id, $refund_amount, $refund_reason) {
    $order = wc_get_order($id);
    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        $qty = $item->get_quantity();
        $product->increase_stock($qty);
    }
}

このコードは、返金後に商品の在庫数量を増やします。

サンプルコード4: 返金データを外部サービスに送信

add_action('woocommerce_order_refunded', 'send_refund_data_to_external_service', 10, 4);
function send_refund_data_to_external_service($id, $refund_id, $refund_amount, $refund_reason) {
    // ここに外部サービスへの送信処理を実装
}

このコードは、返金情報を外部サービスに送信するための構造を提供しています。

サンプルコード5: 特定の状況でのみ返金を許可

add_action('woocommerce_order_refunded', 'conditional_refund_check', 10, 4);
function conditional_refund_check($id, $refund_id, $refund_amount, $refund_reason) {
    $order = wc_get_order($id);
    if ($order->get_total() > 100) { // 例: 100ドル以上の注文のみ返金を許可
        // 返金処理を続行
    }
}

このコードは、特定の条件を満たす場合にのみ返金処理を許可する例です。

これらのサンプルコードは著作権フリーであり、必要に応じてカスタマイズし、プロジェクトに適用することができます。

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


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