Supprimer le html dans le titre des articles

Par défaut, WordPress autorise l’emploi de code HTML dans les titres des articles et des pages.
Mise en place sur demande de certains utilisateurs, cette fonctionnalité peut présenter plusieurs problèmes, notamment lorsque le CMS est utilisé par plusieurs utilisateurs.

Pour empêcher l’insertion de balises HTML dans les titres, une solution est d’insérer le code suivant dans le fichier functions.php de votre thème :

if (!function_exists('dfr_remove_tags_from_title')) :
  add_action( 'save_post', 'dfr_remove_tags_from_title', 10, 1);
  function dfr_remove_tags_from_title($post_id) {
    global $wpdb;

    $title = wp_strip_all_tags(get_the_title($post_id));

    $wpdb->update( $wpdb->prefix . "posts", array('post_title'=>$title), array('ID'=>post_id));
  }
endif;

Au moment où l’article est sauvé dans l’interface d’administration, notre fonction remove_tags_from_title() est appelée. Elle prend en compte un paramètre : l’id du post que l’on va sauvegarder en base de donnée.

On récupère ensuite le titre de cet article, et on lui applique une fonction interne à WordPress : wp_strip_all_tags(), inspirée de la fonction PHP native strip_tags(). Cette fonction retire purement et simplement toutes les balises HTML, mais aussi le code PHP, le JavaScript et le CSS inline, pour ne conserver que le texte.

Il n’y a pas de page d’explications sur cette fonction dans le Codex WordPress, mais vous pourrez en savoir plus sur w4dev.

Cet article a été publié dans WordPress par . Mettez-le en favori avec son permalien.