Вопрос или проблема
В Woocommerce, на странице товара, я хочу настроить текст “Доступно для предварительного заказа” для конкретных вариантов (размеры L и XL). Таким образом, когда клиент выбирает размер L или XL, текст “Доступно для предварительного заказа” будет отображаться как “Изготовлено на заказ”. Я знаю, как изменить текст, но как сделать это только для размеров L и XL? Спасибо!
function change_backorder_message( $text, $product ){
if ( $product->managing_stock() && $product->is_on_backorder( 1 ) ) {
$text = __( 'Изготовлено на заказ ', 'your-textdomain' );
}
return $text;
}
add_filter( 'woocommerce_get_availability_text', 'change_backorder_message', 10, 2 );
Я это сделал.
Класс css для текста доступности “stock.available-on-backorder.step-1” ( Доступно- сделано на заказ).
<?php
add_action( 'woocommerce_before_add_to_cart_quantity', 'made_to_measure' );
function made_to_measure() {
global $product;
if ( $product->is_type('variable') ) {
?>
<script>
jQuery(document).ready(function($) {
$('input.variation_id').change( function(){
if( '' != $('input.variation_id').val() ) {
//var var_id = $('input.variation_id').val();
var pa_size = jQuery( "#pa_size" ).val();
if (pa_size=='l' || pa_size=='xl')
{
$('.stock.available-on-backorder.step-1').html("Доступно- сделано на заказ");
}
}
});
.
Ответ или решение
Для решения задачи по изменению текста "Available for back order" для конкретных вариаций товаров в WooCommerce, таких как размеры L и XL, нам потребуется настроить код так, чтобы он учитывал эти критерии. Я предложу вам последовательные шаги для достижения желаемого результата.
Шаг 1: Изменение текста доступности
Ваша изначальная функция для изменения текста доступности позволяет изменить текст на все товары, имеющие статус обратного заказа. Для того чтобы внести изменения только для конкретных вариаций (в вашем случае, для размеров L и XL), нужно будет использовать фильтры WooCommerce и методы работы с вариациями.
Код для изменения текста доступности
Вы можете использовать следующие строки кода в файле functions.php
вашей темы:
function change_backorder_message( $availability, $product ) {
if ( $product->is_type('variable') ) {
// Получаем выбранные атрибуты вариации
$variation_id = isset($_REQUEST['variation_id']) ? intval($_REQUEST['variation_id']) : 0;
$variation = new WC_Product_Variation($variation_id);
$attributes = $variation->get_attributes();
// Проверяем, есть ли атрибут 'pa_size' и его значение
if (isset($attributes['pa_size']) && ($attributes['pa_size'] == 'l' || $attributes['pa_size'] == 'xl')) {
$availability = __( 'Custom Made to Measure', 'your-textdomain' );
}
}
return $availability;
}
add_filter('woocommerce_get_availability_text', 'change_backorder_message', 10, 2);
Шаг 2: Скрипт для обновления доступности в реальном времени
Также необходимо обеспечить обновление текста доступности при выборе вариации на фронтенде. Для этого мы можем использовать jQuery, который будет отслеживать изменение вариации и обновлять текст на основе ее значений.
add_action('woocommerce_before_add_to_cart_quantity', 'custom_backorder_script');
function custom_backorder_script() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$(document).on('change', 'select[name="attribute_pa_size"]', function() {
var size = $(this).val();
if (size === 'l' || size === 'xl') {
$('.stock.available-on-backorder.step-1').html("Available- made to measure");
} else {
// Вы можете вернуть текст по умолчанию, если это необходимо
$('.stock.available-on-backorder.step-1').html("Available for backorder");
}
});
});
</script>
<?php
}
Заключение
С помощью вышеуказанных шагов вы сможете настроить текст доступности для конкретных вариаций (размеров L и XL) в WooCommerce. Важно убедиться, что ваши атрибуты правильно настроены и соответствуют ключам в массиве атрибутов. Кроме того, рекомендуется тестировать изменения, чтобы убедиться, что всё работает корректно после написания и внедрения кода.
Обратите внимание, что изменения в коде могут потребовать проверки совместимости с текущими плагинами и темами на вашем сайте. Регулярное создание резервных копий перед внесением изменений является хорошей практикой в веб-разработке.