概要
woocommerce_order_refunded
アクションは、WooCommerceにおいて注文が返金された際にトリガーされるフックです。このアクションは、注文の返金処理後に実行される特定の機能をカスタマイズしたり、追加の処理を行う際に非常に便利です。以下のような機能を実装する際に頻繁に使用されます。
- 返金理由を記録する
- 顧客に返金通知を送信する
- 在庫を更新する
- 返金に依存したカスタムアクションをトリガーする
- 分析用に返金データをロギングする
- サードパーティのサービスと統合する
構文
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ドル以上の注文のみ返金を許可
// 返金処理を続行
}
}
このコードは、特定の条件を満たす場合にのみ返金処理を許可する例です。
これらのサンプルコードは著作権フリーであり、必要に応じてカスタマイズし、プロジェクトに適用することができます。