Автоматический выбор первых доступных вариантов из вариаций переменных продуктов WooCommerce

У меня есть футболка разных размеров и цветов. После выбора одного варианта я хотел бы, чтобы первый доступный вариант был автоматически выбран в другом варианте.

Например, если бы у меня была белая футболка только с большим и очень большим размером и зеленая футболка только с малым и средним, когда пользователь выбирает белый цвет, он должен автоматически выбрать большой. Однако, если пользователь затем передумает и выберет зеленый, он должен автоматически выбрать маленький. Хотя это должно происходить только в том случае, если в другом варианте еще не выбран вариант.

Хотя я могу запустить сценарий для выбора первой включенной опции при изменении, как только пользователь снова изменит цвет на другой, WooCommerce выдает предупреждение «Нет в наличии» и отменяет их выбор, прежде чем я снова смогу запустить сценарий при изменении.

Я безуспешно пытался работать с woocommerce_variation_select_change, woocommerce_variation_has_changed и show_variation hide_variation.

Любая помощь приветствуется. Ниже примерно то, что я придумал до сих пор:

$(document).on( 'change', '.variations select', function( event ) {
        
    if ( !$(this).val() ) return false;
    var select = $(this);
    var variations = $(this).closest('.variations');
    
    $(variations).find('select').not(select).each(function() {

        var val = $(this).val();
            
        if ( !val || ( val && !$(this).find('option[value='+val+']:enabled') ) ) {

            $(this).find('option:enabled').each(function() {
                            
                if ( $(this).attr('value') ) {
                        
                    $(this).prop('selected', 'selected');
                    return false;
    
                }

            });
        
        } 

    });
    
});

person S4m    schedule 17.07.2020    source источник


Ответы (1)


Вы можете решить эту проблему, используя functions.php вместо написания js на стороне клиента.

add_filter('woocommerce_dropdown_variation_attribute_options_args','fun_select_default_option',10,1);
function fun_select_default_option( $args)
{

    if(count($args['options']) > 0) //Check the count of available options in dropdown
        $args['selected'] = $args['options'][0];
    return $args;
}

примечание: ответ был скопирован с Wordpress StackExchange

person Hasan Parasteh    schedule 13.12.2020