概要
woocommerce_create_refund
アクションは、WooCommerceでの返金処理が実行される際にトリガーされるフックです。このアクションは、様々なカスタマイズや追加の処理を実行するために使われます。例えば、返金時に通知を送信したり、特定の条件に基づいて返金を運用する場合に便利です。以下は、woocommerce_create_refund
を使用する際の一般的なユースケースです。
- 返金処理が行われた際にカスタム通知を送信
- 返金金額に応じて在庫を調整
- 返金の理由をロギングまたは記録する
- 他のシステムへの連携(例:会計ソフトへの連携)
- 返金処理の状態に基づいてユーザーのロールを変更
- マーケティングデータの解析を行う
構文
add_action('woocommerce_create_refund', 'your_function_name', 10, 2);
パラメータ
$refund_id
(int): 返金 ID。$refund
(WC_Order_Refund): 返金オブジェクト。
戻り値
このアクションには戻り値はありません。処理が完了した後に実行されるカスタムコードに依存します。
使用可能なバージョン
- WooCommerce: バージョン 2.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_create_refund', 'notify_user_of_refund', 10, 2);
function notify_user_of_refund($refund_id, $refund) {
$order = wc_get_order($refund->get_order_id());
$to = $order->get_billing_email();
$subject = '返金通知';
$message = 'あなたの注文が返金されました。金額: ' . $refund->get_amount();
wp_mail($to, $subject, $message);
}
引用元: https://woocommerce.com
サンプル 2: 返金金額に基づく在庫調整
このコードは、返金金額に基づいて在庫を調整します。
add_action('woocommerce_create_refund', 'adjust_stock_after_refund', 10, 2);
function adjust_stock_after_refund($refund_id, $refund) {
$items = $refund->get_items();
foreach ($items as $item) {
$product_id = $item->get_product_id();
$quantity = $item->get_quantity();
wc_add_stock($product_id, $quantity);
}
}
引用元: https://woocommerce.com
サンプル 3: 返金理由のロギング
このコードは、返金理由をログファイルに記録します。
add_action('woocommerce_create_refund', 'log_refund_reason', 10, 2);
function log_refund_reason($refund_id, $refund) {
$reason = $refund->get_reason();
error_log('返金理由: ' . $reason);
}
引用元: https://woocommerce.com
サンプル 4: 返金時にカスタムフィールドを追加
このサンプルでは、返金時にカスタムフィールドとしてフィードバックを追加します。
add_action('woocommerce_create_refund', 'add_feedback_to_refund', 10, 2);
function add_feedback_to_refund($refund_id, $refund) {
$feedback = '顧客からのフィードバック'; // 任意の値
update_post_meta($refund_id, '_refund_feedback', $feedback);
}
引用元: https://woocommerce.com
サンプル 5: 返金時に外部APIを呼び出す
このサンプルコードは、返金時に外部のAPIを呼び出します。
add_action('woocommerce_create_refund', 'call_external_api_on_refund', 10, 2);
function call_external_api_on_refund($refund_id, $refund) {
$api_url = 'https://example.com/api/refund';
$response = wp_remote_post($api_url, [
'body' => json_encode(['refund_id' => $refund_id, 'amount' => $refund->get_amount()]),
'headers' => ['Content-Type' => 'application/json'],
]);
}
引用元: https://woocommerce.com