WPML
Statut
Résolue
Type
Bug
Signalée pour
WPML Multilingual CMS 4.6.0
Étiquettes de sujet
Compatibility, Feature request

Aperçu de l’anomalie

Si vous traduisez vos champs personnalisés natifs de WordPress, vous devrez peut-être modifier vos préférences de traduction au fur et à mesure de l’évolution de votre projet. Cependant, vous devrez mettre à jour votre contenu pour que ces champs personnalisés soient disponibles pour la traduction dans l’Éditeur de traduction avancé.

Bien que ce soit le comportement attendu, nous comprenons tout à fait que cela ne soit pas souhaitable, en particulier si vous possédez un grand site et que vos traductions sont à un stade avancé.

Remarque : depuis Advanced Custom Field Multilingual 2.0, ce n’est plus le cas pour les champs ACF, car il recalcule la signature du contenu pour tous les articles et oblige à recréer de nouveaux travaux de traduction.

Solution de contournement

Veuillez effectuer une sauvegarde complète de votre site avant de continuer.

Remarque : N’oubliez pas que si vous utilisez notre fonctionnalité Tout traduire, ces champs personnalisés seront traduits automatiquement.

  1. Ajoutez l’extrait suivant dans votre fichier functions.php en veillant à remplacer ces deux valeurs par les vôtres.
    • Nom du type de publication : post
    • Nom du champ personnalisé : 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. Visitez votre site et ajoutez ceci à votre URL : /?wpml_sync (par ex.
    https://example.com/?wpml_sync)
  3. Supprimez le code de votre fichier.

Toutes les anomalies connues