WordPress : Problème d’échappement de texte contenant des balises HTML

Publié par Jean-Michel le

Je travaille sur un thème et lorsque j’utilise le plugin NS Theme Check pour vérifier mon thème pour les erreurs et les avertissements, je reçois beaucoup de ces avertissements

AVERTISSEMENT On s’attend à ce que la prochaine chose soit une fonction d’échappement (voir Codex pour ‘Validation des données’)

Je sais exactement que j’ai besoin d’échapper aux données avant de pouvoir les utiliser dans n’importe quel code HTML. Mais c’est là que réside mon problème. Dans de nombreux scénarios, la chaîne se compose de html et de variables (variables déjà échappées). Exemple serait

  echo get_category_parents($ID, TRUE, ' </li>', FALSE);

Le retour get_category_parents()

<a href="link_to_category">Catgeory</a>

Maintenant, quand j’essaie d’échapper à toute la ligne comme

echo esc_html(get_category_parents($ID, TRUE, ' </li>', FALSE),'default');

L’ensemble du balisage html est traité comme une chaîne. qui n’est pas reconnu comme un balisage html valide par un navigateur.

Et ci-dessus est juste un scénario. Il existe de nombreux scénarios de ce type. Quel pourrait être un moyen possible de gérer une telle situation. Merci

Solution n°1 trouvée

Pour échapper au contenu html, vous pouvez utiliser wp_ksesla fonction.

$allowed = array(
    'li' => array(),
    'a' => array(
        'href' => true,
    ),
);

echo wp_kses('<li><a href="#" target="_blank">Category</a></li>', $allowed);

Si vous ne souhaitez pas passer le tableau autorisé, vous pouvez utiliser le tableau WordPress par défaut pour le contenu de la publication qui est utilisé dans wp_kses_postla fonction.

echo wp_kses_post('<li><a href="#" target="_blank">Category</a></li>');

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *