• Здравствуйте.

    Создал дополнительное поле 'wpcf-short-description' в кастомном типе постов 'investoptions' через плагин Types Toolset.

    В файле wpm-config.json написал следующее:

    {
      "post_types": {
        "investoptions": {}
      },
      "post_fields": {
        "custom_field": {
          "wpcf[short-description]": {}
        }
      }
    }

    wpcf[short-description] – это атрибут name поля input которые присваивается этому полю при редактировании записи.

    Но текст для всех языков отображается тот же самый.

    Что и где необходимо прописать, что бы перевод кастомных полей сохранялся?

    • This topic was modified 5 years, 9 months ago by stovberpv.
Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter stovberpv

    (@stovberpv)

    Так же пробовал такой вариант:

    "post_fields": {
        "custom_field": {
          "wpcf": {
            "wpm_each": {
              "short-description": {}
            }
          }
        }
      }

    Поскольку в БД поле сохраняется как wpcf-short-description
    И различные комбинации с добавлением/удалением "custom_field": { и "wpm_each": {
    Ни один из вариантов не сработал.

    Thread Starter stovberpv

    (@stovberpv)

    Проблема частично решена. Пропустил один важный момент в документации:
    For set translation uses the syntax:
    [:en]Donec vitae orci sed dolor[:de]Cras risus ipsum faucibus ut[:]

    Теперь в посте в админке разный текст для разных языков. Но на странице текст так и выводится
    [:es]Donec vitae orci sed dolor[:ru]Лучшее предложение ut[:]

    На форуме вроде как есть решение для админки – wp_enqueue_script( 'wpm_translator' ); и далее вызывать функцию перевода. Но проблема в том, что это решение только для админки. А для сайта? При добавлении через wp_enqueue_scripts этот скрипт не зарегистрирован. даже после загрузки всех плагинов он не доступен.

    Thread Starter stovberpv

    (@stovberpv)

    Одно из найденных решений заключается в следующем:
    1. скопировать js скрипт для перевода себе в тему
    2. подключить на страницу
    3. локализовать скрипт нужными данными
    4. вызвать на странице

    
    wp_enqueue_script( 'wpm_translator', get_template_directory_uri() . '/assets/plugin/wpm/translator.js', array( 'jquery' ), null, true );
    
      $languages = array_map( function( $lang ) {
        return substr( $lang, 0, 2 );
      }, get_available_languages() );
    
      $translator_params = array(
        'languages'                 => $languages,
        'default_language'          => 'ru',
        'language'                  => substr( determine_locale(), 0, 2 ),
        'show_untranslated_strings' => 'yes',
      );
      wp_localize_script( 'wpm_translator', 'wpm_translator_params', $translator_params );
    

    вызывается следующим образом

    
    function wpmTranslate($) {
    	$('[data-wpm-translate-me="1"]').each(function () {
    		var text = wpm_translator.translate_string($(this).text());
    		$(this).text(text);
    	});
    }
    

    Велосипед но рабочий.

    Еще как вариант – воспользоваться функцией wpm_translate_string() из плагина как оберткой над get_post_meta( get_the_ID(), 'wpcf-short-description', true )

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Перевод дополнительных полей’ is closed to new replies.