Retirer les balises paragraphes dans ACF
Cet article fait suite au précédent, où j’indique des fonctions pour Retirer les balises paragraphes de ses images dans wordpress
Mise en garde
Avant d’aller plus loin, je dois vous mettre en garde : n’utilisez pas ces fonctions directement sur un site en live. Faites le d’abord sur un site de test pour voir quelle fonction marche pour vous.
Je pars de l’exemple sur un de mes sites:
Dans l’Éditeur WYSIWYG d’ACF j’ai des images qui sont entourées d’une balise <p></p> . Ces balises s’insèrent toutes seules au moment de l’enregistrement de l’article.
Sur mon site, j’ai bien un espace entre chaque image, comme ci-dessous
Si j’applique une des fonctions décrites ci-dessous, comme par exemple:
Je vois un effet immédiat dans mes articles, l’espace entre chaque image disparait, comme ci-dessous:
Ca casse donc complètement le visuel de mes articles, c’est assez moche, et ca se répercute sur tout le site. Si vous avez des centaines d’articles avec des photos alignées les unes en dessous des autres, ca risque de poser un gros problème.
Dans l’inspecteur du navigateur, je vois bien que les balises paragraphes ont disparues
Pourtant, même si le changement est immédiatement visible sur le site, dans l’Éditeur WYSIWYG d’ACF en version texte, j’ai toujours mes balises <p></p> autour de mes images!!
Et même si je double l’espace entre les images, avec le remove_filter, rien ne se passe en front, mes images restent collées.
Pour annuler ce changement, il faut revenir en arrière, et supprimer la fonction.
Pour ma part, ce qui me pose problème, c’est surtout pour les vidéos Youtube intégrées en début d’article sur chaque page.
J’applique le code suivant:
Dans l’inspecteur du navigateur, je vois bien que la balise paragraphe a disparu autour de ma vidéo
Pourtant, là encore, dans l’WYSIWYG d’ACF en version texte, j’ai toujours mes balises. Si je les supprime et enregistre, elles réaparaissent à nouveau
.
Ces balises inutiles sont donc bien dans le code, mais invisibles pour le navigateur.
Le problème avec ce bug, car c’est un gros bug, c’est que lorsqu’on utilise SEO by Yoast, on trouve dans les erreurs SEO la mention « Le mot-clé principal n’apparaît pas dans le premier paragraphe du texte. Assurez-vous que le sujet soit clair immédiatement. ». Le premier élément de ma page article est une vidéo. Officiellement j’ai supprimé les balises paragraphes autour de mes vidéos, mais apparemment Yoast SEO voit cette balise qui est bien dans l’éditeur. Mon mot clé qui est pourtant bien dans le premier paragraphe du texte n’est jamais reconnu par SEO By Yoast. Esc-ce que Google aussi ne le voit pas?
On peut bien sûr passer outre les recommandations du plugin, mais cela soulève quand même un gros bug. ACF pointe du doigt l’éditeur de wordpress, mais même si leurs propres fonctions ne résolvent pas ce problème, c’est que par nature, et de manière générale, wordpress a de grosses lacunes a ce niveau là.
J’énumère quand même ici toutes les solutions trouvées ici ou là pour supprimer ces balises inutiles qui s’insèrent toutes seules. Cela pourra certainement en aider certains.
Retirer les balises paragraphes avec des expressions régulières
Pour retirer toute balise de paragraphe inutile dans les champs additionnels ACF, on peut reproduire le même code utilisé pour supprimer les balises <p></p> dans the_content() en utilisant le hook acf_the_content comme suit: ici on supprimer les balises paragraphes qui entourent les images, iframes et script.
Le paramètre de formatage
Selon le support d’ACF, on peut supprimer le formatage dans le paramètre de la fonction d’affichage du champs additionnel
et pour la variable format_value, mettre false pour indiquer qu’on ne veut pas de formatage
Remove filter
Une autre option est simplement d’utiliser un filtre pour supprimer le formatage dans ACF
Remove filter sur l’acf/init
Pour d’autres, le fait d’annuler le formatage sur l’init d’acf et d’appliquer une priorité semble fonctionner
Utiliser Strip_tag
Une autre solution consiste à utiliser la fonction php strip_tags()
Conserver le formatage pour un champs particulier
Enfin dernière solution, utilisant le même filtre acf. Ici supprime le formatage, on affiche le champs additionnel, et on remet le formatage.
Voici une version plus simple, fournie par le support d’ACF
Essayez l’une de ces solutions, il se peut qu’aucune ne marche !! Tous ces bouts de code doivent être placés quelque part dans votre fichier functions.php
Les options d’ACF
A savoir, si vous utilisez un champs de type « zone de texte » dans ACF, vous avez l’option directement dans les options d’édition du champs additionnel. Parmi les trois choix proposés, il suffit de sélectionner « Aucun formatage ».