woocommerce_ajax_variation_threshold
Позволяет изменить пороговое кол-во (число) вариаций товара, после которого вариации начинают загружаться через AJAX, а не сразу.
Поведение по умолчанию:
-
Если вариаций < 30:
- Выпадающие списки (например, "Цвет" и "Размер") динамические.
- После выбора одного атрибута остальные обновляются через AJAX, показывая только доступные опции.
-
Если вариаций ≥ 30:
- Выпадающие списки статические — показываются все опции, даже недоступные.
- При выборе недоступной комбинации — сообщение об ошибке - «К сожалению, ни один товар не соответствует вашему выбору. Пожалуйста, выберите другую комбинацию».
Такое ограничение сделано для оптимизации производительности на сайтах с большим количеством вариаций.
Этот фильтр позволяет изменить это ограничение с 30 на другое число. Например на 100:
add_filter( 'woocommerce_ajax_variation_threshold', fn() => 100 );
Использование
add_filter( 'woocommerce_ajax_variation_threshold', 'wp_kama_woocommerce_ajax_variation_threshold_filter', 10, 2 );
/**
* Function for `woocommerce_ajax_variation_threshold` filter-hook.
*
* @param $30
* @param $product
*
* @return
*/
function wp_kama_woocommerce_ajax_variation_threshold_filter( $30, $product ){
// filter...
return $30;
}
- $threshold(int)
- Maximum number of variations to load upfront.
- $product(WC_Product)
- Product object.
Примеры
#1 Изменим кол-во вариаций товара отображаемых за раз
add_filter( 'woocommerce_ajax_variation_threshold', 'custom_wc_ajax_variation_threshold', 10, 2 );
function custom_wc_ajax_variation_threshold( $qty, $product ) {
return 40;
}
Где вызывается хук
woocommerce_ajax_variation_threshold
woocommerce/includes/wc-template-functions.php 2227
$get_variations = count( $product->get_children() ) <= apply_filters( 'woocommerce_ajax_variation_threshold', 30, $product );