Voici deux façons d'inclure des éléments HTML5 dans votre contenu WordPress sans que la fonction "wpautop" de WordPress les enveloppe dans des balises p ou jonche votre code avec des sauts de ligne. Le HTML5 a plusieurs nouveaux éléments que vous pouvez utiliser dans le content, header, footer, etc. La façon simple d'inclure ces éléments en toute sécurité dans vos posts est de désactiver la fonction wpautop de sorte que WordPress ne fera aucune tentative pour corriger votre balisage et vous laissera coder manuellement chaque ligne de vos posts. Si vous voulez un contrôle total sur chaque ligne de votre code HTML, c'est l'option que vous devez choisir. pour ce faire ajouter ces lignes à functions.php de votre thème :

remove_filter('the_excerpt', 'wpautop');
remove_filter('the_content', 'wpautop');

Si vous ajoutez des éléments HTML5 au contenu de votre message, vous devez utiliser un doctype HTML5.

<!DOCTYPE html>

L'autre manière est un peu plus compliquée.

Toutefois, wpautop est généralement très utile si la plupart de vos posts sont des contenus de texte simple et que vous voulez seulement occasionnellement inclure des éléments HTML5. Par conséquent, la modification wpautop pour reconnaître les éléments HTML5 pourrait être plus pratique.

Modifier wpautop pour reconnaître les éléments HTML5

Wpautop de WordPress fait partie des fonctions de base et peut être trouvé dans ce dossier au sein de votre installation WordPress: wp-includes/formatting.php. Il contrôle comment et où les paragraphes et les sauts de ligne sont insérés dans des extraits et le contenu du post.

Afin de créer une version modifiée de la fonction wpautop du noyau de WordPress, ajoutez les lignes suivantes dans le fichier functions.php de votre thème et vous serez capable d'utiliser section, article, aside, header, footer, hgroup, figure, details, figcaption, et summary dans votre contenu. Probablement le mieux est d'essayer cela dans un environnement de test, en premier lieu!

function modifautop($pee, $br = 1) {
   if ( trim($pee) === '' )
      return '';
   $pee = $pee . "n";
   $pee = preg_replace('|<br />s*<br />|', "nn", $pee);
   $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)';
   $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "n", $pee);
   $pee = preg_replace('!(</' . $allblocks . '>)!', "nn", $pee);
   $pee = str_replace(array("rn", "r"), "n", $pee);
   if ( strpos($pee, '<object') !== false ) {
   $pee = preg_replace('|s*<param([^>]*)>s*|', "<param>", $pee);
   $pee = preg_replace('|s*</embed>s*|', '</embed>', $pee);}
   $pee = preg_replace("/nn+/", "nn", $pee);
   $pees = preg_split('/ns*n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
   $pee = '';
   foreach ( $pees as $tinkle )
   $pee .= '<p>' . trim($tinkle, "n") . "</p>n";
   $pee = preg_replace('|<p>s*</p>|', '', $pee);
   $pee = preg_replace('!<p>([^<]+)</(div|address|form|section|article|aside)>!', "<p></p></>", $pee);
   $pee = preg_replace('!<p>s*(</?' . $allblocks . '[^>]*>)s*</p>!', "", $pee);
   $pee = preg_replace("|<p>(<li.+?)</p>|", "", $pee);
   $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote><p>", $pee);
   $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
   $pee = preg_replace('!<p>s*(</?' . $allblocks . '[^>]*>)!', "", $pee);
   $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)s*</p>!', "", $pee);
   if ($br) {
   $pee = preg_replace_callback('/<(script|style).*?</\1>/s', create_function('$matches', 'return str_replace("n", "<WPPreserveNewline />", $matches[0]);'), $pee);
   $pee = preg_replace('|(?<!<br />)s*n|', "<br />n", $pee);
   $pee = str_replace('<WPPreserveNewline />', "n", $pee);
   }
   $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)s*<br />!', "", $pee);
   $pee = preg_replace('!<br />(s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol|img|figcaption|summary)[^>]*>)!', '', $pee);
   if (strpos($pee, '<pre') !== false)
   $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
   $pee = preg_replace( "|n</p>$|", '</p>', $pee );

   return $pee;
}

remove_filter('the_excerpt', 'wpautop');
remove_filter('the_content', 'wpautop');
add_filter('the_excerpt', 'modifautop');
add_filter('the_content', 'modifautop');