プラグインWooCommerceのwoocommerce_delete_product_transients関数の使用方法・解説

概要

woocommerce_delete_product_transients 関数は、WooCommerce においてプロダクトのトランジェントキャッシュを削除するための関数です。この関数は特定のプロダクトに関連する一時的なデータをクリアする際に使用されます。トランジェントは通常、リソースを節約するために一時的なデータをキャッシュするために使われますが、プロダクトの情報や在庫状況が変更された時にはそのキャッシュを削除することが重要です。

この関数は以下のような機能を実装する際によく使われます:

  1. プロダクトの更新後にキャッシュをクリアする
  2. 商品の在庫状況が変更された際に速やかにデータを更新する
  3. 新しい商品を追加した際に古いトランジェントをクリアする
  4. プロダクトの価格情報を変更した際に最新の情報を反映させる
  5. 商品情報をインポートした後にキャッシュをクリアする
  6. プロダクトの詳細を表示するページで最新の情報を確保する

構文

woocommerce_delete_product_transients( $product_id );

パラメータ

  • $product_id (int) : 削除するトランジェントの対象となるプロダクトの ID。

戻り値

この関数は、トランジェントの削除処理を行い、成功した場合は true、何も削除するものがなかった場合は false を返します。

使用可能なプラグインとバージョン

  • 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( 'save_post', 'my_custom_save_product' );

function my_custom_save_product( $post_id ) {
    if ( 'product' === get_post_type( $post_id ) ) {
        woocommerce_delete_product_transients( $post_id );
    }
}

このコードは、WooCommerce商品が保存されるたびにその商品のトランジェントを削除します。

サンプル2: 商品が削除された時にトランジェントを削除する

add_action( 'before_delete_post', 'my_custom_delete_product' );

function my_custom_delete_product( $post_id ) {
    if ( 'product' === get_post_type( $post_id ) ) {
        woocommerce_delete_product_transients( $post_id );
    }
}

プロダクトが削除される前にそのトランジェントを削除する処理を追加しています。

サンプル3: プロダクト在庫が変更されたときに呼び出す

add_action( 'woocommerce_product_set_stock', 'my_custom_stock_change', 10, 1 );

function my_custom_stock_change( $product_id ) {
    woocommerce_delete_product_transients( $product_id );
}

商品に関連する在庫情報が変更された際にそのトランジェントを削除します。

サンプル4: ショートコード使用時にトランジェントを削除

add_shortcode( 'custom_product_display', 'my_custom_product_display' );

function my_custom_product_display( $atts ) {
    $product_id = $atts['id'];
    woocommerce_delete_product_transients( $product_id );

    // プロダクトの情報を表示する処理を追加
}

ショートコードを使ってプロダクト情報を表示する際、該当するトランジェントを削除します。

サンプル5: 商品価格変更アクション

add_action( 'woocommerce_update_product', 'my_custom_update_product', 10, 1 );

function my_custom_update_product( $product_id ) {
    woocommerce_delete_product_transients( $product_id );
}

商品の価格やメタデータが更新されるたびに、そのプロダクトのトランジェントを削除します。

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


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