WPML
Статус
Открыто
Заявлено для
WPML Multilingual CMS 4.6.0
Теги темы
Compatibility, Feature request

Обзор проблемы

Если Вы переводите стандартные произвольные поля WordPress, по мере развития проекта Вам может потребоваться изменить настройки перевода. Однако Вам потребуется обновить контент, чтобы эти произвольные поля стали доступны для перевода в Расширенном редакторе переводов.

Хотя это и ожидаемое поведение, мы прекрасно понимаем, что оно нежелательно, особенно если у Вас большой сайт, а процесс перевода находится на продвинутом этапе.

Примечание: начиная с Advanced Custom Field Multilingual 2.0, это больше не относится к полям ACF, так как он пересчитывает сигнатуру контента для всех записей и принудительно пересоздает новые задания на перевод.

Обходное решение

Пожалуйста, перед продолжением обязательно сделайте полную резервную копию Вашего сайта.

Примечание: обратите внимание, что если Вы используете нашу функцию Переводить все, эти произвольные поля будут переведены автоматически.

  1. Добавьте следующий фрагмент кода в Ваш файл functions.php, обязательно заменив эти два значения на свои.
    • Название типа записи: post
    • Название произвольного поля: simple_field
      add_action('wp', function(){
          $config = [
              'post_type' => 'post', //Post type slug
              'meta_key_name' => 'simple_field' //Custom field key
          ];
         
          if (!isset($_GET['wpml_sync'])) {
              return;
          }
         
          set_time_limit(0);
          do_action('wpml_switch_language', apply_filters( 'wpml_default_language', null ));
          $all_posts = get_posts([
              'post_type' => $config['post_type'],
              'posts_per_page' => -1,
              'suppress_filters' => false
          ]);
         
          if (empty($all_posts)) {
              return;
          }
         
          foreach ($all_posts as $post) {
              do_action( 'wpml_sync_custom_field', $post->ID, $config['meta_key_name'] );
          }
         
          wp_die('Done!');
      });
  2. Перейдите на Ваш сайт и добавьте следующее к URL: /?wpml_sync (например,
    https://example.com/?wpml_sync)
  3. Удалите код из файла.

Все известные проблемы →