wp_kses()
Définition : wp_kses() filtre une chaîne HTML selon des balises et attributs autorisés. Cette fonction WordPress est utilisée pour préserver un sous-ensemble de mise en forme tout en retirant des constructions interdites.
Comprendre et utiliser
À quoi sert ce terme ?
Elle permet d’afficher des contenus partiellement enrichis, comme du texte en emphase et des liens, sans accepter arbitrairement des éléments HTML actifs. C’est un outil d’échappement adapté au HTML autorisé.
Fonctionnement technique
On lui fournit le texte et une liste explicite de balises/attributs permis ou un contexte reconnu. Le résultat conserve uniquement ce que la politique autorise, indépendamment de la bonne foi du rédacteur.
Dans quels contextes l’utiliser ?
Utiliser lorsque l’interface doit réellement afficher du HTML provenant d’une source contrôlée ou nettoyée. Préférer esc_html() lorsqu’aucune mise en forme HTML n’est nécessaire.
Cas concret : ATOOLPHA
ATOOLPHA accepte dans une courte notice un lien documentaire et du gras, mais pas des images distantes ou des attributs d’événement.
Exemple de code commenté
Extrait PHP destiné à un plugin ou à un template WordPress, dans le contexte indiqué ; pas au contenu HTML de l’article.
<?php
$notice = '<strong>Documentation</strong> <a href="https://example.org" onclick="alert(1)">Voir</a>';
$allowed = array(
'strong' => array(),
'a' => array( 'href' => true ),
);
echo wp_kses( $notice, $allowed );
Décryptage de l’exemple
Le tableau autorise strong et le href d’un lien. L’attribut onclick n’étant pas admis, il est supprimé. L’URL example.org est fictive et n’implique aucune recommandation de site.
Résultat attendu
La notice conserve le texte en gras et le lien, sans gestionnaire onclick. Le résultat reste limité à la liste de balises autorisées.
Exercice pratique et vérification
Tester une notice avec strong, lien, image et gestionnaire onclick. Observer les éléments retirés et comparer à esc_html().
Précautions et limites
La définition d’une liste trop large ou l’ajout d’attributs dangereux annulerait l’intérêt du filtrage. Éviter de traiter wp_kses() comme une garantie universelle pour tous les contextes de sortie.
À ne pas confondre
wp_kses_post() emploie la politique HTML des contenus WordPress ; wp_kses() accepte une politique personnalisée ; esc_html() transforme le HTML en texte.
Diagnostic avancé
Si un attribut utile disparaît, inspecter la liste autorisée et le contexte, puis confirmer qu’il ne crée pas de surface de script.
Choix d’architecture et déploiement
La politique HTML autorisée est une décision applicative. Garder cette liste courte, documenter la raison de chaque attribut et prévoir des tests couvrant les schémas d’URL et les balises interdites. Pour du texte pur, une sortie avec esc_html() demeure plus simple.
Contrôle avant intégration
Examiner précisément les attributs autorisés et les protocoles URL ; ne jamais élargir une politique HTML juste pour faire disparaître un avertissement.
Notions associées
- wp_kses_post()
- esc_html()
- Validation des données
