定義されたトランジェントを再生成します $product or $WooCommerceのバリエーションオブジェクト
特定の製品またはバリエーションオブジェクトのすべてのネイティブトランジェントを再生成する方法があるかどうか本当に疑問に思います。
ダイナミックプライシングを表示している場合で、すべて問題ありません。しかし、wc_prices_{id}
この新しいカスタム価格を考慮に入れるために、のようにトランジェントを更新する必要があります。そうでない場合、最初のページの読み込みはひどいです(特に一度に複数の製品を表示するショップページで)。
私はにフックだwoocommerce_product_variation_get_price
、woocommerce_product_variation_get_regular_price
、woocommerce_variation_prices_price
そしてwoocommerce_variation_prices_regular_price
要するに、これはその場で修正する(EVERY SINGLE価格ページの、そしてそれは子供を含む親の場合、それはあまりにも範囲の価格を(最小/最大)を計算するために、子どもたちのために価格を変更します親の)。
Woocommerceコードを掘り下げてみると、どのメソッドが一時的な価格を生成するかがわかりましread_price_data()
たwp-content/plugins/woocommerce/includes/data-stores/class-wc-product-variable-data-store-cpt.php
。それはにあります。しかし、それを製品またはバリエーションオブジェクトで呼び出すためのCronJobスクリプトと呼ぶ方法が見つかりません。
このタスクの解決策を知っていますか?
敬具。
回答
キャッシュされた価格の変動に関係する3つのフィルターフックは次のとおりです。
woocommerce_variation_prices_price
woocommerce_variation_prices_regular_price
woocommerce_variation_prices_sale_price
キャッシュされた価格を再生成するには、これらのフックで使用できます。
wc_delete_product_transients( $variation->get_id() );
しかし、それはあなたのウェブサイトのパフォーマンスを遅くします。
Woocommerce 3以降に導入された
woocommerce_get_variation_prices_hash
フィルターフックを使用すると、フックがトリガーされたときに関連するトランジェントを削除することなく、キャッシュされた価格のバリエーションをはるかに効率的に更新できます。
ドキュメントと関連スレッド:
- キャッシングと動的価格設定–get_variation_pricesメソッドの今後の変更
- WooCommerce3のフックを介して製品価格を変更する
- woocommerce_get_variation_prices_hashフィルタフックを使用するすべての関連スレッド