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();
?>

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>