概要
woocommerce_delete_shop_order_transients
は、WooCommerceにおいて、特定のショップオーダーのトランジェントを削除した後に実行されるフックです。このアクションは主に次のような機能を実装する際に使用されます。
- ショップオーダーのキャッシュクリア
- ステータス変更時のデータリフレッシュ
- ショッピングカートや注文履歴の最適化
- 統計データの収集時のデータ整合性確保
- サードパーティシステムとの統合処理
- 自動レポート生成のトリガー
構文
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 );
}
引用元
サンプルコード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 ] ),
]);
}
引用元
サンプルコード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/