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

概要

woocommerce_order_is_partially_refunded アクションは、WooCommerceで注文の一部が払い戻されたときにトリガーされるフックです。このアクションを利用することで、部分的な返金が行われた際にカスタム処理を実装することができます。たとえば、特定の通知を送信したり、在庫を更新したり、顧客のアカウントにポイントを追加したりすることが可能です。以下のような機能を実装する際によく使用されます。

  1. 返金後の顧客への通知送信
  2. 特定の在庫管理の自動化
  3. 会員ランクやポイントの更新
  4. 記録のためのカスタムログの生成
  5. 外部システムとの統合
  6. オーダーの状態や履歴の更新

構文

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' ),
    ) );
}

このコードは、部分返金が行われた際に外部システムにその情報を送信します。

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


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