[WordPress] Remplacer les balises <p> autour des images


Je ne sais pas pourquoi, mais WordPress à la fâcheuse habitude (depuis des années) de placer des balises <P> autour des images. Un wrapper c’est bien, mais autant utiliser le bon. Et avec l’arrivée de HTML5, la nouvelle balise <figure> semble plus appropriée. Sauf que si vous utilisez WordPress depuis plusieurs années, vous devez avoir un sacré paquet d’articles non conformes.

Voici une fonction qui va remplacer à la volée les balises paragraphe par des balises figure. A placer dans votre fichier functions.php de votre thème.

add_filter( 'the_content', 'replace_p_in_img', 99 );
function replace_p_in_img( $content ) {
   $content = preg_replace(
      '/<p>\\s*?(<a rel=\"attachment.*?><img.*?><\\/a>|<img.*?>)?\\s*<\\/p>/s',
      '<figure>$1</figure>',
      $content
   );
   return $content;
}

Simple, efficace et en accord avec HTML5.

via