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

概要

woocommerce_order_refund_object_updated_propsは、WooCommerceにおける注文の返金情報が更新された際に発火するフックです。このアクションは、主に以下の様な機能を実装する際に利用されます。

  1. 返金処理のカスタマイズ
  2. 返金時の通知の送信
  3. 返金履歴のログ
  4. カスタムデータの保存
  5. 返金金額の条件付き計算
  6. 外部システムとの連携

構文

do_action( 'woocommerce_order_refund_object_updated_props', $order_id, $refund );

パラメータ

  • $order_id (int) – 更新された返金対象の注文ID
  • $refund (WC_Order_Refund) – 更新された返金オブジェクト

戻り値

このアクションには戻り値はありません。フックを介して任意の処理を実行します。

使用可能なプラグイン/WooCommerceのバージョン

  • 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_refund_object_updated_props', 'send_custom_refund_notification', 10, 2 );

function send_custom_refund_notification( $order_id, $refund ) {
    $order = wc_get_order( $order_id );
    // メール送信コード
    wp_mail( $order->get_billing_email(), '返金通知', '返金が処理されました。' );
}

サンプルコード2: 返金履歴のログ記録

このサンプルは、返金が行われるたびに履歴を別のテーブルに記録します。

add_action( 'woocommerce_order_refund_object_updated_props', 'log_refund_history', 10, 2 );

function log_refund_history( $order_id, $refund ) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'refund_history';
    $wpdb->insert( 
        $table_name, 
        array( 
            'order_id' => $order_id, 
            'refund_id' => $refund->get_id(), 
            'created_at' => current_time( 'mysql' ) 
        ) 
    );
}

サンプルコード3: 返金金額の条件付き計算

このサンプルでは、特定の条件に基づいて返金金額を調整します。

add_action( 'woocommerce_order_refund_object_updated_props', 'adjust_refund_amount_conditionally', 10, 2 );

function adjust_refund_amount_conditionally( $order_id, $refund ) {
    if ( /* ある条件 */ ) {
        $adjusted_amount = $refund->get_amount() * 0.5; // 50%の返金
        $refund->set_amount( $adjusted_amount );
    }
}

サンプルコード4: 外部APIとの連携

このコードは、返金が行われた際に外部APIに情報を送信します。

add_action( 'woocommerce_order_refund_object_updated_props', 'send_refund_to_external_api', 10, 2 );

function send_refund_to_external_api( $order_id, $refund ) {
    $data = array(
        'order_id' => $order_id,
        'refund_id' => $refund->get_id(),
        'amount' => $refund->get_amount(),
    );

    wp_remote_post( 'https://example.com/api/refund', array(
        'body' => json_encode( $data ),
        'headers' => array( 'Content-Type' => 'application/json' ),
    ));
}

サンプルコード5: カスタムデータの保存

この例では、返金時にカスタムメタデータを保存します。

add_action( 'woocommerce_order_refund_object_updated_props', 'save_custom_refund_data', 10, 2 );

function save_custom_refund_data( $order_id, $refund ) {
    $refund_id = $refund->get_id();
    update_post_meta( $refund_id, '_custom_refund_meta', 'カスタムデータ' );
}

これらのサンプルは、woocommerce_order_refund_object_updated_propsアクションを使用して、さまざまなカスタマイズ及び機能を実装する方法を示しています。このフックを利用することで、WooCommerceの返金処理を柔軟に拡張することが可能です。

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


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