Vous utilisez un Custom Post Type réalisé soit avec CPT UI ou un code maison et vos contenus dynamiques à travers des champs ACF, mais ils ne sont pas pris en compte avec Polylang en utilisant Elementor PRO ? Voyons comment y remédier…
Notez que cet article concerne les version gratuites des extensions. ACF + Polylang PRO ne rencontrent pas de problèmes déclaratif.
Définition du contexte qui pose problème avec Polylang et Elementor PRO
Polylang gratuit supporte, de base, les CPT et ACF, lorsque l’on utilise Polylang avec Elementor PRO avec des modèles dynamiques il faut ajouter l’extension Connect Polylang for Elementor pour pouvoir synchroniser les modèles de langues entre-eux. Cette extension bloque la synchronisation des champs ACF si vous les utilisez avec un Custom Post Type. Il faut déclarer votre CPT et les champs ACF au sein d’un fichier XML référent pour Polylang. Voici la procédure à suivre.
Déclarez vos champs personnalisés ACF et votre CPT pour Polylang
Ce problème je l’ai rencontré récemment sur un projet, les entrées du Custom Post Type réalisées via des champs ACF ne pouvaient être traduits avec Polylang. À chaque traduction en anglais la version française affichait la traduction anglaise.
Après recherche et consultation de la documentation de Polylang il apparaît que la prise en compte des champs ACF, cu CPT et sa/ses taxonomies peut se faire via un fichier wpml-config.xml.
Construction du fichier XLM pour Polylang
En suivant la documentation Polylang j’ai réalisé le fichier suivant :
<wpml-config>
<custom-fields>
<custom-field action="translate">sous-titre</custom-field>
<custom-field action="translate">description</custom-field>
<custom-field action="translate">situation</custom-field>
<custom-field action="translate">superficie</custom-field>
<custom-field action="translate">cepages</custom-field>
<custom-field action="translate">age_moyen_des_vignes</custom-field>
<custom-field action="translate">vendanges</custom-field>
<custom-field action="translate">vinification</custom-field>
<custom-field action="translate">elevage</custom-field>
<custom-field action="translate">production</custom-field>
</custom-fields>
<custom-types>
<custom-type translate="1">vins</custom-type>
</custom-types>
<taxonomies>
<taxonomy translate="1">categorie_de_vin</taxonomy>
</taxonomies>
</wpml-config>
pour chaque type d’entrée on déclare la balise idoine (custom-fields, custom-types, taxonomies) avec leur identifiant. Pour le CPT et la taxonomie on déclare : translate= »1″ pour autoriser la traduction.
Le fichier doit impérativement êtres nommé « wpml-config.xml » pour être pris en compte par Polylang.
Emplacement du fichier pour une prise en compte effective par Polylang
Notez bien que le fichier doit être placé d’une certaine manière pour être pris en compte. La bonne façon de faire est de créer un sous-dossier « polylang » dans le dossier « wp-content » :
Une fois en place les traductions seront bien gérée au sein de Polylang, du CPT et de ses catégories, et enfin les champs ACF.
Autre solution via un code snippet PHP pour un thème enfant
J’ai trouvé une autre solution plus simple mais non testée en environnement de production avec un snippet PHP à mettre dans un thème enfant (ou en utilisent l’extension Code Snippet si vous n’utilisez pas de thème enfant). Voici le code :
// SUPPORT POLYLANG FOR ACF
add_filter('pll_get_post_types', 'wearewp_add_acf_pll', 10, 2);
function wearewp_add_acf_pll( $post_types, $is_settings ) {
$post_types[] = 'acf-field-group';
return $post_types;
}
Advanced Custom Fields : Extended propose elle aussi le support entre Polylang et ACF
Enfin, pour terminer cet article et si vous avez un peu de latitude au niveau de vos extensions (point trop n’en faut) l’extension Advanced Custom Fields : Extended vous apportera le support des champs ACF par Polylang. A essayer.
Sources : extension ACF gratuite, extension Polylang gratuite, documentation Polylang