Empecher WordPress d’ajouter des tags « p » et « br » au post

Vous souhaitez créer une page qui affiche du contenu brûte? Type XML par exemple?

Voici la solution pour que wordpress arrete de décorer votre texte avec des balises <p> et <br />.

Le responsable est la fonction wpautop(). A lui s’ajoute wptexturize() qui lui convertit certaines entités texte en entités HTML

Il suffit de désactiver ces deux filtres qui sont appliqués par défaut dans « wp-includes/default-filters.php ». Si vous souhaitez le désactiver uniquement dans un template utilisez ces fonctions :

remove_filter( ‘the_content’, ‘wpautop’);

remove_filter( ‘the_content’, ‘wptexturize’);

Il est important d’utiliser la fonction get_the_content() et pas the_content() car si votre XML utilise la balise CDATA votre XML sera corrompu à cause de cette ligne qui se trouve dans la fonction the_content():

$content = str_replace(‘]]>’, ‘]]&gt;’, $content);

 

Voici un exemple de template wordpress spécialement concu pour traiter le XML :

<?php
<?php

/**
 * @author samuel.mamet@gmail.com
 */

/*
  Template Name: XML Document
*/ 

// Suppression du filtre qui ajoute des <p> et <br /> intenpestif.
remove_filter( 'the_content', 'wpautop'); 

// Convertit certains caractères après certaines balises. ex : --> devient &#8211;>
remove_filter( 'the_content', 'wptexturize'); 

header('Content-type: text/xml');

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
the_post();
echo get_the_content();
?>

5 comments

  1. Merci, ça marche très bien

  2. Marche impeccable merci !

  3. Bonjour,

    Je suis relativement sur WP et je ne sais pas tout bêtement ou placer le code PHP ci-dessus…

    Merci d’avance !

  4. Rectif. au post précédent : …relativement nouveau sur WP…

  5. admin

    Bonjour,

    Pour désactiver ces fonctions dans tout le thème il faut le mettre dans le fichier functions.php de ton thème.
    Pour désactiver ces fonctions au niveau d’un seule template il faut le mettre au début du template.

    Tous les fichiers du thème se trouve dans /wp-content/themes/[nom du thème]/

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>