概要
woocommerce_order_is_partially_refunded
アクションは、WooCommerceで注文の一部が払い戻されたときにトリガーされるフックです。このアクションを利用することで、部分的な返金が行われた際にカスタム処理を実装することができます。たとえば、特定の通知を送信したり、在庫を更新したり、顧客のアカウントにポイントを追加したりすることが可能です。以下のような機能を実装する際によく使用されます。
- 返金後の顧客への通知送信
- 特定の在庫管理の自動化
- 会員ランクやポイントの更新
- 記録のためのカスタムログの生成
- 外部システムとの統合
- オーダーの状態や履歴の更新
構文
do_action( 'woocommerce_order_is_partially_refunded', $order_id, $refund_id );
パラメータ
$order_id
: 注文のID(整数)$refund_id
: 返金のID(整数)
戻り値
戻り値はなく、何かを返すものではありません。このアクションをトリガーすると、関連する処理が実行されます。
使用可能なバージョン
- WooCommerce: 4.0.0以降
- WordPress: 5.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_is_partially_refunded', 'send_partial_refund_notification', 10, 2 );
function send_partial_refund_notification( $order_id, $refund_id ) {
$order = wc_get_order( $order_id );
// 顧客へのメール通知を送信
wp_mail( $order->get_billing_email(), 'Partial Refund Processed', 'Your order has been partially refunded.');
}
このコードは、部分返金が行われた際に顧客にメールを送信します。
サンプルコード2
add_action( 'woocommerce_order_is_partially_refunded', 'update_stock_after_partial_refund', 10, 2 );
function update_stock_after_partial_refund( $order_id, $refund_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
// 部分返金により在庫を更新
$product = $item->get_product();
$product->increase_stock( $item->get_quantity() );
}
}
このコードは部分的な返金時に、返金された商品の在庫を増加させる機能を持っています。
サンプルコード3
add_action( 'woocommerce_order_is_partially_refunded', 'add_points_to_customer_account', 10, 2 );
function add_points_to_customer_account( $order_id, $refund_id ) {
$user_id = get_post_meta( $order_id, '_customer_user', true );
// ユーザーアカウントにポイントを追加
if ( $user_id ) {
// ポイント追加のロジックをここに記述
}
}
このコードは部分的に返金された顧客のアカウントにポイントを追加する処理を行います。
サンプルコード4
add_action( 'woocommerce_order_is_partially_refunded', 'log_partial_refund', 10, 2 );
function log_partial_refund( $order_id, $refund_id ) {
$message = sprintf( 'Order #%d was partially refunded. Refund ID: %d', $order_id, $refund_id );
// カスタムログへの記録
file_put_contents( 'partial_refund.log', $message . PHP_EOL, FILE_APPEND );
}
このコードは、部分返金が行われたことをカスタムログファイルに記録します。
サンプルコード5
add_action( 'woocommerce_order_is_partially_refunded', 'integrate_with_external_system', 10, 2 );
function integrate_with_external_system( $order_id, $refund_id ) {
$order = wc_get_order( $order_id );
// 外部APIに部分返金情報を送信するロジック
$response = wp_remote_post( 'https://external-system.com/api/refund', array(
'method' => 'POST',
'body' => json_encode( array(
'order_id' => $order_id,
'refund_id' => $refund_id,
) ),
'headers' => array( 'Content-Type' => 'application/json' ),
) );
}
このコードは、部分返金が行われた際に外部システムにその情報を送信します。