Woocommerce позволяет гибко управлять текстом, отображаемым на странице магазина. Один раз нужно использовать фильтры gettext и ngettext для замены слов или фраз.
Например, чтобы поменять “Магазин” на “Магазин цветов” на всех страницах, можно использовать такой код:
add_filter('gettext', 'translate_text'); add_filter('ngettext', 'translate_text'); function translate_text($translated) { $translated = str_ireplace('Магазин', 'Магазин цветов', $translated); return $translated; }
Фильтр gettext отвечает за перевод одиночных фраз, а ngettext — множественного числа.
Таким образом, этот код ищет фразу “Магазин” в переведенном тексте и заменяет ее на нужное значение.
Преимущества этого метода:
- Работает глобально, изменяет текст на всех страницах
- Не нужно часто обнаруживать шаблоны
- Можно менять как одиночные, так и множественные формы
Недостаток — если в переводе есть другие вариации слова “магазин”, они тоже заменятся.
Чтобы этого избежать, можно использовать регулярные выражения или проверку условий внутри функции.
function translate_text_on_shop_page($translated) { if ( !function_exists('is_shop') ) { // WooCommerce не активен return $translated; } { $translated = str_ireplace('Магазин', 'Магазин цветов и подарков', $translated); } return $translated; } add_filter('gettext', 'translate_text_on_shop_page'); add_filter('ngettext', 'translate_text_on_shop_page');
В этом коде мы использовали те же фильтры gettext и ngettext, но получили проверку на главной странице магазина с помощью функции is_shop().
Таким образом, замена текста будет исключительно на странице /shop/, на остальных страницах слово “Магазин” будет без изменений.
Это более гибкий подход, который позволяет изменять текст на отдельных страницах, не охватывая весь сайт. Для других страниц можно добавить проверку результатов проверки is_page(), is_product_category() и т.д.