Я ищу решение своей проблемы ...
У меня есть продукты в Woocommerce, с вариациями.Если ВСЕ варианты отсутствуют на складе, я хочу изменить текст кнопки «Добавить в корзину» на «Продано» и также отредактировать CSS кнопки (изменить ее цвет) ДО того, как вариант будет выбран в раскрывающемся списке ...
Итак, вот сценарий:
Я перехожу на одну страницу с переменным продуктом.Продукт имеет 4 варианта:
В настоящее время: кнопка «добавить в корзину» отображается (выделена серым цветом) и может быть нажата до выбора варианта.Появляется предупреждение, предлагающее пользователю выбрать вариант.Когда я выбираю вариант из выпадающего списка, кнопка становится серой, если в этом варианте нет в наличии.Если все 4 варианта отсутствуют, при начальной загрузке страницы все еще отображается кнопка «Добавить в корзину», выделенная серым цветом, и по щелчку указывается, что нужно выбрать вариант.
ЧТО ХОЧУ: если по крайней мере есть еще один вариантна складе стандартная функциональность Woocommerce остается неизменной («Добавить в корзину», при нажатии на которую выдается предупреждение о необходимости выбора варианта).Если на складе НЕТ вариантов, кнопка «Добавить в корзину» сразу же сообщает «распродано» и отображается серым цветом.(Прежде чем выбрать вариант).
Проблема, которую я обнаружил, заключается в том, что весь существующий код для изменения текста кнопки добавления в корзину выполняется при выборе варианта из раскрывающегося списка.Мне как-то нужно проверить, есть ли ЛЮБОЙ из вариантов на складе (до того, как они будут выбраны), а затем либо изменить текст кнопки на «продано», если ВСЕ варианты отсутствуют, либо оставить его при первой загрузке, и изменитьтекст только тогда, когда выбран вариант отсутствия на складе.
Надеюсь, это понятно.Спасибо!
===
По запросу я попробовал следующий код:
add_filter( 'woocommerce_product_add_to_cart_text',
'customizing_add_to_cart_button_text', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text',
'customizing_add_to_cart_button_text', 10, 2 );
function customizing_add_to_cart_button_text( $button_text, $product ) {
$sold_out = __( "Sold Out", "woocommerce" );
$availability = $product->get_availability();
$stock_status = $availability['class'];
// Only for variable products on single product pages
if ( $product->is_type('variable') && is_product() )
{
?>
<script>
jQuery(document).ready(function($) {
$('select').blur( function(){
if( '' != $('input.variation_id').val() && $('p.stock').hasClass('out-of-stock') )
$('button.single_add_to_cart_button').html('<?php echo $sold_out; ?>');
else
$('button.single_add_to_cart_button').html('<?php echo $button_text; ?>');
console.log($('input.variation_id').val());
});
});
</script>
<?php
}
// For all other cases (not a variable product on single product pages)
elseif ( ! $product->is_type('variable') && ! is_product() )
{
if($stock_status == 'out-of-stock')
$button_text = $sold_out.' ('.$stock_status.')';
else
$button_text.=' ('.$stock_status.')';
}
return $button_text;
}
Это меняет текст кнопки, но только когда выбраны варианты -Мне нужно проверить, все ли варианты отсутствуют, и сразу же изменить текст.