WC_Query::prime_variable_products_transients
Prime transient option caches for variable products in bulk to avoid per-product queries during rendering.
Метод класса: WC_Query{}
Хуков нет.
Возвращает
array.
Использование
$WC_Query = new WC_Query(); $WC_Query->prime_variable_products_transients( $posts, $query );
- $posts(массив) (обязательный)
- Posts from WP Query.
- $query(WP_Query) (обязательный)
- Current query.
Список изменений
| С версии 11.3.0 | Введена. |
Код WC_Query::prime_variable_products_transients() WC Query::prime variable products transients WC 11.3.0
public function prime_variable_products_transients( $posts, $query ) {
if ( 'product_query' === $query->get( 'wc_query' ) && ! wp_using_ext_object_cache() ) {
$options = array();
// Performance note: post caches has been already primed, hence the loop operates on in-memory data.
foreach ( $posts as $post ) {
$terms = $post instanceof \WP_Post ? get_object_term_cache( $post->ID, 'product_type' ) : null;
$terms = array_filter( is_array( $terms ) ? $terms : array(), static fn ( $term ) => $term instanceof \WP_Term ); // @phpstan-ignore instanceof.alwaysTrue (defensive checks against filters)
if ( ! empty( $terms ) && ProductType::VARIABLE === current( $terms )->slug ) {
$product_id = $post->ID;
// See also \WC_Product_Variable_Data_Store_CPT::read_product_data and sync with it when necessary.
$options[] = '_transient_wc_var_prices_' . $product_id;
$options[] = '_transient_timeout_wc_var_prices_' . $product_id;
$options[] = '_transient_wc_product_children_' . $product_id;
$options[] = '_transient_timeout_wc_product_children_' . $product_id;
$options[] = '_transient_wc_child_has_weight_' . $product_id;
$options[] = '_transient_timeout_wc_child_has_weight_' . $product_id;
$options[] = '_transient_wc_child_has_dimensions_' . $product_id;
$options[] = '_transient_timeout_wc_child_has_dimensions_' . $product_id;
$options[] = '_transient_wc_related_' . $product_id;
$options[] = '_transient_timeout_wc_related_' . $product_id;
}
}
if ( ! empty( $options ) ) {
wp_prime_option_caches( $options );
}
}
return $posts;
}