Как изменить текст «Сэкономьте» в корзине WooCommerce?

Добрый день! В корзине товаров со скидкой отображается сообщение, например, "Сэкономьте 5000 руб". Как можно изменить этот текст? Я проверил файл переводов плагина, но однозначно такой строки не нашел. У меня все стандартные настройки, без лишних плагинов. Есть подозрение, что файлы перевода хранятся в другом месте и подтягиваются по-другому. Установив дефолтные темы и отключив остальные плагины, изменений не произошло. Можно ли внедрить исправления с помощью JS или CSS, или же для изменения этого текста необходим другой подход?
  • 27 октября 2024 г. 12:23
Ответы на вопрос 2
Здравствуйте!

Чтобы изменить текст «Сэкономьте» в корзине WooCommerce, у вас есть несколько вариантов:

### 1. Использование функции перевода (gettext):
WooCommerce использует функцию перевода, и вы можете изменить текст программно с помощью фильтров. Для этого добавьте следующий код в файл `functions.php` вашей темы:

```php
add_filter('gettext', 'change_discount_text', 20, 3);
function change_discount_text($translated_text, $text, $domain) {
    if ($text === 'Сэкономьте') {
        $translated_text = 'Ваши сбережения';
    }
    return $translated_text;
}
```

Замените `'Ваши сбережения'` на желаемый текст.

### 2. Использование плагина для редактирования переводов:
Если вы предпочитаете более удобный способ, можете использовать плагин, например, **Loco Translate**. Он позволяет редактировать переводы прямо из админ-панели WordPress:

1. Установите и активируйте плагин Loco Translate.
2. Перейдите в «Loco Translate» > «Плагины» и выберите «WooCommerce».
3. Найдите строку «Сэкономьте» и измените ее на нужный вам текст.

### 3. Использование JavaScript:
Если вышеуказанные методы по какой-то причине не работают, вы можете изменить текст с помощью JavaScript. Добавьте следующий скрипт на страницу:

```javascript
jQuery(document).ready(function($) {
    $('.woocommerce-cart .discount').each(function() {
        var currentText = $(this).text();
        if (currentText.includes('Сэкономьте')) {
            $(this).text(currentText.replace('Сэкономьте', 'Ваши сбережения'));
        }
    });
});
```

### 4. Использование CSS (при условии, что текст содержится в определенном классе):
Хотя CSS не изменит текст, его можно скрыть, если это необходимо:

```css
.woocommerce-cart .discount {
    display: none; /* Скрыть текст */
}
```

Однако, этот подход не заменит текст на что-то другое.

### Заключение:
Рекомендуется использовать фильтр в PHP, так как этот способ является наиболее надежным и управляемым. Варианты с JavaScript и CSS можно использовать как временные решения, но они менее надежны.
<blockquote>В файле переводов плагина такой строки нет. </blockquote> <br/> <a href="https://translate.wordpress.org/projects/wp-plugins/woocommerce/stable/ru/default/?filters%5Bterm%5D=%D0%A1%D1%8D%D0%BA%D0%BE%D0%BD%D0%BE%D0%BC%D1%8C%D1%82%D0%B5&amp;filters%5Bterm_scope%5D=scope_any&amp;filters%5Bstatus%5D=current_or_waiting_or_fuzzy_or_untranslated&amp;filters%5Buser_login%5D=&amp;filter=Apply+Filters&amp;sort%5Bby%5D=priority&amp;sort%5Bhow%5D=desc" rel="nofollow">Есть</a> <br/> <br/> Но можно и <a href="https://woocommerce.com/document/woocommerce-localization/#translating-text-without-a-localization-file" rel="nofollow">закостылить с плагином  Say What</a>
Похожие вопросы