Buat ulang transien untuk ditentukan $product or $Variasi Objek di WooCommerce
Saya benar-benar ingin tahu apakah ada cara untuk membuat ulang semua transien asli untuk produk atau objek variasi tertentu.
Saya dalam kasus di mana saya menampilkan harga dinamis, dan semuanya baik-baik saja. Tetapi saya perlu memperbarui transien seperti wc_prices_{id}
agar dapat memperhitungkan harga kustom baru ini. Jika tidak, pemuatan halaman pertama sangat buruk (terutama pada halaman toko yang menampilkan beberapa produk sekaligus).
Saya mengaitkan ke woocommerce_product_variation_get_price
, woocommerce_product_variation_get_regular_price
, woocommerce_variation_prices_price
dan woocommerce_variation_prices_regular_price
(singkatnya, ini memodifikasi dengan cepat SETIAP HARGA halaman, dan jika itu orang tua yang berisi anak-anak, itu mengubah harga untuk anak-anak juga untuk menghitung harga kisaran (min / max) dari orang tua).
Saat menggali kode Woocommerce, saya telah menemukan metode mana yang menghasilkan harga sementara: itu read_price_data()
terletak di wp-content/plugins/woocommerce/includes/data-stores/class-wc-product-variable-data-store-cpt.php
. Tetapi saya tidak dapat menemukan cara untuk menyebutnya skrip Cron Job saya untuk menyebutnya pada produk atau objek variasi.
Apakah kalian mengetahui solusi untuk tugas ini?
Salam.
Jawaban
3 kait filter yang terlibat dalam variasi harga cache adalah:
woocommerce_variation_prices_price
woocommerce_variation_prices_regular_price
woocommerce_variation_prices_sale_price
Untuk meregenerasi harga cache, Anda dapat menggunakan hook tersebut:
wc_delete_product_transients( $variation->get_id() );
Tetapi itu akan memperlambat kinerja situs web Anda.
Diperkenalkan sejak Woocommerce 3,
woocommerce_get_variation_prices_hash
hook filter akan memungkinkan untuk menyegarkan variasi harga yang di-cache dengan cara yang jauh lebih efisien, tanpa menghapus transien terkait kapan pun hook tersebut terpicu.
Dokumentasi dan utas terkait:
- Caching dan harga dinamis - perubahan mendatang pada metode get_variation_prices
- Ubah harga produk melalui hook di WooCommerce 3
- Semua utas terkait menggunakan woocommerce_get_variation_prices_hashkait filter