定義されたトランジェントを再生成します $product or $WooCommerceのバリエーションオブジェクト

Aug 19 2020

特定の製品またはバリエーションオブジェクトのすべてのネイティブトランジェントを再生成する方法があるかどうか本当に疑問に思います。

ダイナミックプライシングを表示している場合で、すべて問題ありません。しかし、wc_prices_{id}この新しいカスタム価格を考慮に入れるために、のようにトランジェントを更新する必要があります。そうでない場合、最初のページの読み込みはひどいです(特に一度に複数の製品を表示するショップページで)。

私はにフックだwoocommerce_product_variation_get_pricewoocommerce_product_variation_get_regular_pricewoocommerce_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スクリプトと呼ぶ方法が見つかりません。

このタスクの解決策を知っていますか?

敬具。

回答

1 LoicTheAztec Aug 20 2020 at 04:13

キャッシュされた価格の変動に関係する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フィルタフックを使用するすべての関連スレッド