У меня есть php и js код, который меняет кнопку "в корзину" на "предзаказ" для вариативных товаров по предзаказу. Но корректно работать это может только на странице продукта. А на странице архива при выборе вариации по предзаказу, меняются кнопки для всех вариативых товаров по предзаказу.
jQuery(document).ready(function ($) {
"use strict";
jQuery(function ($) {
let button = $('.single_add_to_cart_button'),
add_to_cart_text = button.html();
$('form.variations_form')
.on('show_variation', function (event, variation) {
if (variation.hasOwnProperty('pre_order_label')) {
button.html(variation.pre_order_label);
} else {
button.html(add_to_cart_text);
}
})
.on('hide_variation', function (event) {
event.preventDefault();
button.html(add_to_cart_text);
});
});
add_filter( 'woocommerce_available_variation', 'pre_order_variable_button', 20, 3 );
function pre_order_variable_button($array, $variable_product, $variation ) {
$is_pre_order = get_post_meta( $variation->get_id(), '_stock_status', true );
if ( $is_pre_order == 'onbackorder' ) {
$array['pre_order_label'] = esc_html( 'Предзаказ' );
}
return $array;
}