Woocommerce меняем любой текст или надпись

Автор: | 12.11.2017

Плагин Woocommerce пожалуй самый популярный плагин для создания интернет-магазина на базе WordPress. И достаточно удобен для конечного пользователя. Но вот перевод на русский, иногда не соответствует желаемому.

Порой требуется изменить стандартный текст кнопок, заголовков форм на странице оформления заказа или иные надписи, относящиеся к данному плагину. Лезть в код и менять там — не хорошо, т.к. изменения слетят при первом же обновлении. Как решить?

Достаточно в functions.php вашей темы вставить примерно такой код:

// замена стандартных текстов
function rog_shop_strings( $translated_text, $text, $domain ) {
	
	if( 'woocommerce' === $domain ) {
	
		switch ( $translated_text ) {
			case 'Добавить в корзину' :
			$translated_text = 'В корзину';
			break;
		}
	
	}
	
	return $translated_text;
}
add_filter( 'gettext', 'rog_shop_strings', 20, 3 );

В этом примере если $translated_text (текст перевода) равен «Добавить в корзину», то заменяем его на текст «В корзину».

По сути, использование фильтра «gettext» это универсальный способ, которым можно изменить любой текст перевода в wordpress.

Woocommerce меняем любой текст или надпись: 15 комментариев

  1. Максим

    Это круто реально. Весь интернет перекопал ив поисках решения.

  2. Роман

    Думал, что нужно к каждой функции привязывать…
    Благодарю!

    1. Наталья

      У меня работает так, я в самой функции делаю несколько аналогичных операций которые выполняются после if
      вот пример:
      function rog_shop_strings( $translated_text, $text, $domain ) {

      if( ‘woocommerce’ === $domain ) {

      switch ( $translated_text ) {
      case ‘Добавить в корзину’ :
      $translated_text = ‘В корзину’;
      break;
      }
      switch ( $translated_text ) {
      case ‘Детали’ :
      $translated_text = ‘Характеристики’;
      break;
      }

      }

      return $translated_text;
      }
      add_filter( ‘gettext’, ‘rog_shop_strings’, 20, 3 );

  3. Валентин

    Здравствуйте, а как задать перевод например для двух и более позиций?

  4. Вугар

    Здравствуйте, работает, а как мне переводить много слов, при втором написании слов не получился, php ошибку дает.

    1. Наталья

      Ваш комментарий ожидает проверки.

      У меня работает так, я в самой функции делаю несколько аналогичных операций которые выполняются после if
      вот пример:
      function rog_shop_strings( $translated_text, $text, $domain ) {

      if( ‘woocommerce’ === $domain ) {

      switch ( $translated_text ) {
      case ‘Добавить в корзину’ :
      $translated_text = ‘В корзину’;
      break;
      }
      switch ( $translated_text ) {
      case ‘Детали’ :
      $translated_text = ‘Характеристики’;
      break;
      }

      }

      return $translated_text;
      }
      add_filter( ‘gettext’, ‘rog_shop_strings’, 20, 3 );

      Ответить ↓

  5. Виктор

    А в лём проблема внести изменение в языковой файл? для чего такой огород городить ???

    1. rogodessa Автор записи

      Потому что ваш «огород» будет «перепахан», при первом же апгрейде woocommerce. И все что вы исправили в pot файлах плагина, вернется к исходному состоянию.
      Но самый верный вариант это использовать соответствующий фильтр для нужной фразы.
      Например для текст из моего поста («Добавить в корзину»), нужно использовать фильтр «woocommerce_product_add_to_cart_text».
      А вот если не можете найти нужный фильтр, то предложенный мною метод может помочь в определенных ситуациях. К тому же, им можно изменить любой текст любого плагина/темы, если они он был выведен по стандартам WP.

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

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