Как изменить слово или фразу на странице Woocommerce?

Как изменить слово или фразу на странице woocomerce?

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() и т.д.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *