Automattic\WooCommerce\Internal\Utilities
ProductUtil::delete_product_transients_for_products
Delete all product transients for a set of products.
Fixed-name transients are deleted once for the whole set, and the woocommerce_delete_product_transients action fires once per product ID.
Method of the class: ProductUtil{}
Hooks from the method
Returns
null. Nothing (null).
Usage
$ProductUtil = new ProductUtil(); $ProductUtil->delete_product_transients_for_products( $product_ids ): void;
- $product_ids(array) (required)
- Product IDs whose transients are being deleted.
ProductUtil::delete_product_transients_for_products() ProductUtil::delete product transients for products code WC 11.0.0
public function delete_product_transients_for_products( array $product_ids ): void {
$product_ids = array_unique( array_map( 'absint', $product_ids ) );
// Transient data to clear with a fixed name which may be stale after product updates.
$transients_to_clear = array(
'wc_products_onsale',
'wc_featured_products',
'wc_outofstock_count',
'wc_low_stock_count',
);
foreach ( $transients_to_clear as $transient ) {
delete_transient( $transient );
}
$product_ids_to_clear = array_filter( $product_ids );
if ( ! empty( $product_ids_to_clear ) ) {
$this->delete_product_specific_transients_for_products( $product_ids_to_clear );
}
// Kept for compatibility, WooCommerce core doesn't use product transient versions anymore.
\WC_Cache_Helper::get_transient_version( 'product', true );
foreach ( $product_ids as $product_id ) {
/**
* Fires after product transients are deleted.
*
* @since 2.3.0
*
* @param int $product_id Product ID whose transients were deleted.
*/
do_action( 'woocommerce_delete_product_transients', $product_id );
}
}