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. 从文件中删除该代码。

所有已知问题 →