Automattic\WooCommerce\Internal\Utilities
ProductUtil::delete_product_specific_transients_for_products
Delete the transients related to a set of products. If a product is a variation, delete the transients for the parent too.
Method of the class: ProductUtil{}
No Hooks.
Returns
null. Nothing (null).
Usage
$ProductUtil = new ProductUtil(); $ProductUtil->delete_product_specific_transients_for_products( $products_or_ids );
- $products_or_ids(array) (required)
- Products or product ids.
ProductUtil::delete_product_specific_transients_for_products() ProductUtil::delete product specific transients for products code WC 11.0.1
public function delete_product_specific_transients_for_products( array $products_or_ids ) {
$product_ids = array();
foreach ( $products_or_ids as $product_or_id ) {
$parent_id = 0;
if ( $product_or_id instanceof \WC_Product ) {
$product = $product_or_id;
$product_id = $product->get_id();
} else {
$product_id = $product_or_id;
$product = wc_get_product( $product_id );
}
if ( $product instanceof \WC_Product_Variation ) {
$parent_id = $product->get_parent_id();
}
$product_ids[] = $product_id;
if ( $parent_id ) {
$product_ids[] = $parent_id;
}
}
$product_ids = array_unique( array_filter( array_map( 'absint', $product_ids ) ) );
$product_specific_transient_names = array(
'wc_product_children_',
'wc_var_prices_',
'wc_related_',
'wc_child_has_weight_',
'wc_child_has_dimensions_',
);
foreach ( $product_ids as $product_id ) {
foreach ( $product_specific_transient_names as $transient ) {
delete_transient( $transient . $product_id );
}
}
}