Как отключить опцию выбора размера товара в WooCommerce через код

Диагностика проблемы: зачем отключать выбор размера товара

В интернет-магазинах на 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, чтобы избежать ошибок.
  • Сохраняйте оригинальные данные товара в отдельном поле, если планируете вернуть вариации в будущем.

Сравнение вариантов решения

МетодПреимуществаНедостатки
Скрыть выбор размера через фильтрБыстро, не меняет структуру товараПользователь может не понять, что размер фиксирован
Удалить вариации и преобразовать в простой товарПолностью убирает выбор, предотвращает ошибкиТребует внимательности, сложнее откатить

Скачать WP с оф. сайта Магазин проверенных платных тем