• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Изменить текст кнопки "в корзину" для товаров со статусом "предзаказ"

Reddington

Новичок
Всем привет, имеется интернет-магазин, где:
- товары в наличии (Add to Cart)
- товары, которые закончились и их нет в наличии (Out of Stock)
- товары реализуются исключительно под заказ / предзаказ (Add to Cart)

Собственно нужно 3 состояния кнопки "в корзину"
- в корзину
- нет в наличии
- предзаказ

Был установлен плагин Customizer for WooCommerce от SkyVerge, который частично решил проблему - удалось настроить кнопки для первых 2 групп товаров, однако для предзаказа такой функции нет и применяется текст кнопки для товаров в наличии.
Есть ли вообще возможность реализации отдельного текста кнопки "в корзину" именно для товаров со статусом "предзаказ"?
Если да, то подскажите, пожалуйста, возможные решения - код, либо плагин, который имеет такую возможность
 

joy66

Опытный
Местный
Код:
function custom_add_to_cart_button_text($text, $product) {
   //  Проверка, является ли товар предзаказом
     if ($product->is_on_backorder()) {
   return __('Предзаказ', 'text-domain'); // Замените 'Предзаказ' на нужный текст, а text-domain а свой домен текста
    }
elseif(!$product->is_in_stock()){
return __('Нет в наличии', 'text-domain');
}
    return $text; // Возвращает стандартный текст для остальных товаров
}
add_filter('woocommerce_product_add_to_cart_text', 'custom_add_to_cart_button_text', 1000, 2);
add_filter('woocommerce_product_single_add_to_cart_text', 'custom_add_to_cart_button_text', 1000, 2);
 
Последнее редактирование:

Reddington

Новичок
@joy66, спасибо большое!
Если ещё кто-то будет пользоваться кодом, то после return __('Нет в наличии', 'text-domain') пропущен знак ;
return __('Нет в наличии', 'text-domain');
 

joy66

Опытный
Местный
@joy66, спасибо большое!
Если ещё кто-то будет пользоваться кодом, то после return __('Нет в наличии', 'text-domain') пропущен знак ;
return __('Нет в наличии', 'text-domain');
исправил.
text-domain это ваш текстовый домен перевода
и если кому эти строки переводить не надо, то
return __('Нет в наличии', 'text-domain'); можно заменить на
return 'Нет в наличии'; и тд
 
Сверху Снизу