Passer au contenu Passer à la barre latérale

Ce sujet est résolu. Voici une description du problème et de la solution.

Problème:
Si vous rencontrez des difficultés à traduire le contenu d'un champ 'description' dans un Répéteur ACF sur une page d'option, et que les modifications ne sont pas enregistrées en anglais, même après avoir suivi la documentation pour configurer WPML et ACF, nous avons identifié une solution temporaire.

Solution:
Nous avons découvert que le problème peut être contourné en commentant certaines lignes de code. Voici les étapes à suivre :
1. Commentez la ligne 39 dans le fichier

app/public/wp-content/plugins/acfml/classes/strategy/repeater-sync/HooksFactory.php

comme suit :

//if ( $shuffled instanceof Post ) {
	//$hooks[] = new PostHooks( $shuffled ) ;
} elseif ( $shuffled instanceof Term ) {

2. Commentez également le code dans la fonction

PostHooks::displayCheckbox()

dans

wp-content/plugins/acfml/classes/strategy/repeater-sync/PostHooks.php

:

//public function displayCheckbox( $postType, $post ) {
	//$postId = $post->ID ;

    // NOTE : le problème semble lié à l'utilisation de get_field_objects() ici :
	//$fields = get_field_objects( $postId ) ; 

	/*si (
		$fields
		&& ( Fields::containsType( $fields, 'repeater' ) || Fields::containsType( $fields, 'flexible_content' ) )
		&& in_array( Mode::getForFieldableEntity( 'post' ), [ Mode::ADVANCED, Mode::MIXED ], true )
		&& $this->shuffled->isOriginal( $postId )
		&& $this->shuffled->hasTranslations( $postId )
	) {
		CheckboxUI::addMetaBox(
			$this->shuffled->getTrid( $postId ),
			get_post_type( $postId )
		) ;
	}*/

	//$this->maybeResetFieldValuesWhenFieldGroupIsTranslated() ;
//}

Si vous n'êtes pas à l'aise avec la modification du code, nous pouvons appliquer cette solution pour vous. Nous avons également créé une sauvegarde de votre site pour des tests supplémentaires.

Si cette solution ne semble pas pertinente pour votre situation, veuillez ouvrir un nouveau ticket de support.

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Ce sujet contient 13 réponses, a 3 voices.

Dernière mise à jour par Ilyes Il y a 1 année et 8 mois.

Assisté par: Ilyes.

Auteur Messages
décembre 13, 2023 à 11:37 am #15053945

Stéphane

Bonjour,

J'ai créé un Répeteur ACF dans lequel j'ai créé des champs pour gérer une galerie d'images qui est affichée sur la home page du site.
J'ai associé ce groupe de champ à une page d'option.
Cela fonctionne bien dans la langue par défaut de mon site. La galerie remonte sur ma home page.
Par contre en anglais je n'arrive pas à traduire les contenus.
Certains champs sont copiés car identiques dans les 2 langues par contre je n'arrive pas à traduire le champ "description".
Lorsque je sauvegarde en anglais le contenu du champs n'est pas enregistré.
J'ai suivi les instructions de la documentation (https://wpml.org/documentation/related-projects/translate-sites-built-with-acf/expert-translation-option/) pour configurer WPML et ACF, j'ai augmenté également la mémoire car cela semblait être la cause du problème d'enregistrement mais sans succès.
Dans la doc on demande de mettre les groupes de champs ACF dans les settings en "Non traduisible". Si je fais cela je me retrouve avec des anciens groupes de champs FR et EN tous regroupés dans la partie FR...

décembre 13, 2023 à 3:52 pm #15057107

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Bienvenue sur le support de WPML. Oui effectivement il est très important que le type de contenu "groupes de champs" ne soit pas traduisible.

Maintenant lorsque vous éditez votre groupe ACF dans la langue par défaut, c'est la que vous déterminez la préférence de traduction pour chaque champ. Ici on parle de la traduction de la valeur du champ. "ACF > Groupes de champs".

Les champs spéciaux "Répeteur" doivent être avec la préférence de traduction "COPIER" ensuite pour les sous champs dans ce répéteur la préférence peut être "TRADUIRE" ou "COPIER" selon les besoins.

Pour clarifier:
- Oui, si vous passez les Groupes à "Non traduisible", ils n'auront plus de langue attribuée et seront tous disponibles FR et EN mélangés. Il est préférable d'aller d'abord dans "ACF > Groupes de champs", de basculer en Anglais et d'éliminer tous les groupes avant de changer la préférence de traduction à "Non traduisible".
- Ensuite, révisez les préférences de traduction de vos champs
- Retournez sur la page d'option et suivez cette documentation pour effectuer la traduction: https://wpml.org/documentation/related-projects/translate-sites-built-with-acf/translating-the-acf-options-page-custom-fields-with-wpml/

Dites moi si cela résout votre problème. Sinon merci de partager une capture d'écran de votre Groupe ACF où les préférences de traduction sont visibles afin que je puisse mieux comprendre votre configuration.

décembre 13, 2023 à 9:42 pm #15059131

Stéphane

Bonjour Nicolas,

Merci pour votre aide !

J'ai suivi toutes les étapes que vous m'avez demandé de faire et voilà le résultat et mes questions :

1- J'ai supprimé tous mes groupes de champs "EN" (anglais).
2 - J'ai changé le réglage des groupes de champs en Non Traduisible (voir capture ecran)
3 - J'ai réglé le répeteur sur Copier (voir capture ecran)
4 - J'ai réglé individuellement en mode Expert tous les sous champs du répéteur. J'ai mis tous mes champs en copier sauf le champ description destiné au texte en "traduisible"
5 - J'ai utilisé le sélecteur de langue pour atteindre mes écrans d'admin en FR et EN (voir capture ecran). Sur la capture écran FR on voit les champs description remplis et sur la version En les champs description vide (donc à traduire).

Problème : Lorsque que je rentre du texte dans le champ description en version En et que je clic sur Update pour sauvegarder. Au rechargement de la page le champ reste vide... J'ai ajouté
define('WP_MEMORY_LIMIT', '256M');
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
dans le wp-config car c'est ce qui semblait recommandé avec ce bug mais cela ne change rien...

Autre question : Est ce qu'il faut que je refasse tous les réglages de mes anciens groupes de champs (après la suppression de leur version anglaise ) ?

Merci !

Capture d’écran 2023-12-13 à 22.24.56.png
Capture d’écran 2023-12-13 à 22.26.23.png
Capture d’écran 2023-12-13 à 22.14.04.png
Capture d’écran 2023-12-13 à 22.12.42.png
décembre 14, 2023 à 12:06 am #15059999

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Tout les réglages semblent correctes maintenant. À ce stade pourriez vous me donner un accès admin temporaire?
J'ai activé un champ privé pour votre prochaine réponse où vous pourrez partager ces informations de manière confidentielle avec notre support. Ne partagez pas votre propre compte admin, créez un nouveau compte que vous pourrez éliminer une fois l'assistance terminée.

IMPORTANT: Avant de continuer, faites un backup complet de votre site et base de données.

décembre 15, 2023 à 3:56 pm #15074775

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

C'était vraiment un problème étrange.
- J'ai changé la préférence de traduction de "traduire" à "copier une fois" et les descriptions étaient bien copiées mais impossible de sauvegarder un changement.
- En fait, notre éditeur de traduction n'était pas activé sur votre site. Dans "WPML > Paramètres > Éditeur de traduction > Éditeur pour les nouvelles traductions" aucun des éditeurs était choisi!
- Une fois que je l'ai activé, j'ai pu voir que les champs personnalisés ce mettaient finalement à jour (voir capture).
- J'ai passé à nouveau le champ description sur "traduire"
- J'ai sauvegardé la page d'options FR puis j'ai basculé en EN et cette fois-ci les traductions sont sauvegardées lorsque je clique sur "Update".

PS: notez les deux premières descriptions sont différentes du FR (mon test de traduction), les autres sont identiques au FR car j'avais d'abord passé le champ sur "copier une fois". C'est donc pourquoi toutes les descriptions ont été copiées du FR vers EN. Mais vous pouvez les éditer une par une.

Aussi, pour le problème de pagination, je l'ai résolu en désactivant la pagination dans les options du champ repeater. Je vais faire des tests sur un site sandbox pour voir si c'est un problème qui arrive à cause de la pagination (dans ce cas je le reporterai aux devs).

Screenshot 2023-12-15 104325.png
décembre 16, 2023 à 3:44 pm #15077605

Stéphane

Bonjour Nicolas,

J'ai reporté sur mon local les modification et cela fonctionne.
Est ce que vous me tenez au courant pour le bug sur la pagination ?

Merci pour votre aide !

/Stéphane

décembre 16, 2023 à 3:44 pm #15077607

Stéphane

Bonjour Nicolas,

J'ai reporté sur mon local les modifications et cela fonctionne.
Est ce que vous me tenez au courant pour le bug sur la pagination ?

Merci pour votre aide !

/Stéphane

décembre 18, 2023 à 6:16 pm #15086875

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français ) Arabe (العربية )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour Stéphane,

Mon collègue Nicolas est actuellement en congé, je vous aiderai entre temps,

Malheureusement, je n'arrive pas à comprendre à quelle pagination Nicolas et vous faites référence ? Pourriez-vous m'indiquer où je pourrais voir le problème et le reproduire ?

Je pourrais alors recréer sur l'un de nos Sandbox comme Nicolas l'a suggéré,

Merci pour votre patience 🙂

décembre 20, 2023 à 2:40 pm #15103585

Stéphane

Bonjour Ilyes,

Il s'agit de la pagination de la galerie sur la page d'option.

lien caché

C'est normal que vous ne la trouviez pas car justement comme elle dysfonctionne en version EN elle a été désactivée sur la configuration du champ repeater (lien ci-dessous et capture écran).

lien caché

Merci de votre aide

Capture d’écran 2023-12-20 à 15.37.38.png
décembre 21, 2023 à 12:14 am #15106175

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français ) Arabe (العربية )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Je vois le problème maintenant, je l'ai activé et il ne fonctionne actuellement qu'en anglais,

Je vais essayer de reproduire ce problème sur une installation propre pour m'assurer qu'il ne s'agit pas d'un bogue général.

Je vous contacterai une fois que j'aurai terminé mes tests,

Cordialement,

décembre 21, 2023 à 2:54 am #15106437

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français ) Arabe (العربية )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Après d'autres tests, il s'avère que la pagination est en effet un problème général que j'ai pu reproduire dans un sandbox avec différents paramètres,

J'ai transmis votre site ainsi que toutes les informations que nous avons collectées jusqu'à présent à notre équipe de compatibilité,

Je vous informerai dès que j'aurai reçu une mise à jour de leur part.

Cordialement,

janvier 3, 2024 à 11:12 pm #15148950

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français ) Arabe (العربية )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci de votre patience,

Nous avons trouvé une solution temporaire à ce problème,

Nos développeurs ont fait quelques tests et ont découvert que cela ne se produit pas si nous commentons la ligne suivante (39) dans app/public/wp-content/plugins/acfml/classes/strategy/repeater-sync/HooksFactory.php :

if ( $shuffled instanceof Post ) {
	//$hooks[] = new PostHooks( $shuffled ) ;
} elseif ( $shuffled instanceof Term ) {

Ils ont ensuite retracé le problème jusqu'à PostHooks::displayCheckbox()** dans wp-content/plugins/acfml/classes/strategy/repeater-sync/PostHooks.php. Si nous commentons l'extrait suivant, le problème ne se produit pas :

public function displayCheckbox( $postType, $post ) {
		$postId = $post->ID ;

    // NOTE : le problème semble lié à l'utilisation de get_field_objects() ici :
		//$fields = get_field_objects( $postId ) ; 

		/*si (
			$fields
			&& ( Fields::containsType( $fields, 'repeater' ) || Fields::containsType( $fields, 'flexible_content' ) )
			&& in_array( Mode::getForFieldableEntity( 'post' ), [ Mode::ADVANCED, Mode::MIXED ], true )
			&& $this->shuffled->isOriginal( $postId )
			&& $this->shuffled->hasTranslations( $postId )
		) {
			CheckboxUI::addMetaBox(
				$this->shuffled->getTrid( $postId ),
				get_post_type( $postId )
			) ;
		}*/

		$this->maybeResetFieldValuesWhenFieldGroupIsTranslated() ;
	}

Je pourrais appliquer cette solution pour vous si nécessaire, j'ai juste besoin d'une confirmation de votre part,

NB: J'ai téléchargé une sauvegarde de votre site en utilisant All in one WP migration plugin pour des tests supplémentaires,

Merci,

janvier 8, 2024 à 8:38 am #15158813

Stéphane

Bonjour Ilyes,

Est ce que cela sera intégré à la prochaine mise à jour de WPML ?
Si oui ce n'est pas la peine de faire a modification car la pagination n'est utilisée qu'en Back Office et ce n'est pas gênant de ne pas l'avoir pour l'administration de ces contenus.
Nous pouvons attendre...

Merci !

janvier 8, 2024 à 8:53 pm #15162557

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français ) Arabe (العربية )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Pour être honnête, nous n'avons pas de date exacte pour la publication de ce changement, mais les développeurs sont conscients de ce bug et il a déjà été signalé à notre chaîne de compatibilité.

Je pourrais suivre son évolution et voir si quelque chose a changé concernant cette mise à jour.

Merci pour votre comprehension 🙂

Cordialement,