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

概要

woocommerce_delete_shop_order_transientsは、WooCommerceにおいて、特定のショップオーダーのトランジェントを削除した後に実行されるフックです。このアクションは主に次のような機能を実装する際に使用されます。

  1. ショップオーダーのキャッシュクリア
  2. ステータス変更時のデータリフレッシュ
  3. ショッピングカートや注文履歴の最適化
  4. 統計データの収集時のデータ整合性確保
  5. サードパーティシステムとの統合処理
  6. 自動レポート生成のトリガー

構文

do_action( 'woocommerce_delete_shop_order_transients', $order_id );

パラメータ

  • $order_id: 削除対象の注文のID(整数)

戻り値

このアクションは値を返しません。実行された関数によって追加の処理が行われます。

対応バージョン

  • 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_delete_shop_order_transients', 'log_order_transient_deletion' );

function log_order_transient_deletion( $order_id ) {
    error_log( 'Order transient deleted for Order ID: ' . $order_id );
}

引用元

do_action()

サンプルコード2: 注文のお知らせを送信

注文のトランジェントが削除された際に、特定のユーザーにメール通知を送信するコードです。

add_action( 'woocommerce_delete_shop_order_transients', 'notify_admin_order_deletion' );

function notify_admin_order_deletion( $order_id ) {
    $admin_email = get_option( 'admin_email' );
    wp_mail( $admin_email, 'Order Transient Deleted', 'Order ID ' . $order_id . ' transient has been deleted.' );
}

引用元

https://developer.wordpress.org/reference/classes/wp_mail/

サンプルコード3: ステータスの更新をトリガー

トランジェントが削除されたときに、注文のステータスを更新するサンプルです。

add_action( 'woocommerce_delete_shop_order_transients', 'update_order_status_on_transient_deletion' );

function update_order_status_on_transient_deletion( $order_id ) {
    $order = wc_get_order( $order_id );
    if ( $order ) {
        $order->update_status( 'completed' );
    }
}

引用元

https://developer.wordpress.org/reference/classes/wc_order/

サンプルコード4: 外部API呼び出し

トランジェント削除後に外部APIを呼び出すサンプルコードです。

add_action( 'woocommerce_delete_shop_order_transients', 'call_external_api_after_transient_deletion' );

function call_external_api_after_transient_deletion( $order_id ) {
    $response = wp_remote_post( 'https://example.com/api/order', [
        'body' => json_encode( [ 'order_id' => $order_id ] ),
    ]);
}

引用元

wp_remote_post()

サンプルコード5: カスタムメッセージの表示

トランジェントを削除後にフロントエンドでカスタムメッセージを表示するコードです。

add_action( 'woocommerce_delete_shop_order_transients', 'display_custom_message_after_transient_deletion' );

function display_custom_message_after_transient_deletion( $order_id ) {
    echo '<div class="notice notice-success">Order transient for Order ID ' . $order_id . ' has been deleted.</div>';
}

引用元

https://developer.wordpress.org/reference/functions/echo/

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


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