Диагностика проблемы: зачем отключать выбор размера товара
В интернет-магазинах на WooCommerce часто используются вариативные товары с опцией выбора размера. Однако бывают ситуации, когда необходимо временно или постоянно скрыть выбор размера, например, если товар выпускается в одном универсальном размере, или размеры не актуальны для определённых категорий товаров.
Типичная проблема – при наличии вариаций с размерами WooCommerce все равно показывает выпадающий список выбора размера, что сбивает пользователя с толку и увеличивает количество ошибок при заказе.
Как отключить выбор размера товара через код
1. Скрываем атрибут размера на странице товара
Если нужно просто скрыть поле выбора размера, можно использовать хук woocommerce_before_single_product и удалить атрибут из массива вариаций.
add_filter('woocommerce_dropdown_variation_attribute_options_args', function($args, $attribute, $product) {
if ('pa_size' === $attribute) { // замените "pa_size" на ваш slug атрибута размера
$args['options'] = [];
$args['show_option_none'] = '';
}
return $args;
}, 10, 3);Этот код очистит список размеров, сделав выбор невозможным.
2. Отключаем вариативность товара с размерами программно
Если товар всегда в одном размере, можно преобразовать вариативный товар в простой, чтобы полностью убрать выбор атрибутов.
function wc_convert_variable_to_simple($product_id) {
$product = wc_get_product($product_id);
if ($product && $product->is_type('variable')) {
// Удаляем все вариации
$variations = $product->get_children();
foreach ($variations as $variation_id) {
wp_delete_post($variation_id, true);
}
// Меняем тип товара на простой
wp_update_post([
'ID' => $product_id,
'post_type' => 'product'
]);
// Обновляем метаданные
update_post_meta($product_id, '_product_type', 'simple');
}
}Вызовите эту функцию с ID нужного товара, чтобы убрать вариации с размерами.
Проверка результата после внедрения
- На странице товара больше не должно отображаться выпадающего списка выбора размера.
- При добавлении товара в корзину не должно быть ошибок, связанных с отсутствием выбора вариации.
- В админке WooCommerce в карточке товара должно отобразиться, что это простой товар (если применялась вторая методика).
Частые ошибки и как их исправить
- Размер не скрывается и выпадающий список остаётся. Проверьте правильность slug атрибута (обычно
pa_size), используйтеprint_r($attribute)для отладки. - Ошибка при добавлении товара в корзину после удаления вариаций. Очистите кэш сайта и браузера, обновите пермалинки в настройках WordPress.
- Функция удаления вариаций не срабатывает. Убедитесь, что вызываете функцию с правильным ID товара и у пользователя есть права на удаление постов.
Практические советы по безопасности и производительности
- Перед массовым удалением вариаций сделайте резервную копию базы данных.
- Изменения в типе товара лучше делать из админки или через WP CLI, чтобы избежать ошибок.
- Сохраняйте оригинальные данные товара в отдельном поле, если планируете вернуть вариации в будущем.
Сравнение вариантов решения
| Метод | Преимущества | Недостатки |
|---|---|---|
| Скрыть выбор размера через фильтр | Быстро, не меняет структуру товара | Пользователь может не понять, что размер фиксирован |
| Удалить вариации и преобразовать в простой товар | Полностью убирает выбор, предотвращает ошибки | Требует внимательности, сложнее откатить |