web-dev-qa-db-fra.com

wp_kses_post supprime uniquement les balises <script>, mais pas leur contenu

Est-il possible de supprimer les balises <script>, y compris leur contenu?

wp_kses_post semble ne supprimer que les balises, tandis que leur contenu reste visible sur la page.

Je vous remercie

2
Alex Dumitru

KSES est conçu pour empêcher l'exécution de balises non désirées et potentiellement dangereuses, pas pour empêcher l'affichage de innerHTML. Bloquer le contenu nécessiterait

--1 Soit une fonction personnalisée utilisant une sorte de manipulation de chaîne, soit une manipulation de xmlDOM pour supprimer du contenu. ou

--2 Une fonction qui bloquait les publications contenant la balise avec un message indiquant pourquoi la publication avait échoué et des instructions d'utilisation des codes HTML pour restituer la balise de script lors de son utilisation dans des tutoriels plutôt que comme une balise d'exécution.

Le numéro 1 peut produire des problèmes de performance avec ses frais généraux plus élevés. Si l’optimisation des performances pose problème ou si le site implique de nombreuses publications, alors la solution n ° 2 est probablement une solution plus réaliste.

2
Dallas

C'est ce que j'utilise sur mon site pour supprimer des images et des balises de paragraphe. Je suppose que c'est the_content?

<?php
ob_start();
the_content();
$old_content = ob_get_clean();
$new_content = strip_tags($old_content, '<insert HTML tags you want kept');
echo $new_content; ?>

La ligne $new_content supprimera toutes les balises HTML, à l'exception de celles répertoriées après $old_content.

1
Gregory Schultz

Je vous suggère d'utiliser preg_replace () pour filtrer le contenu du message:

add_filter('the_content', 'my_strip_scripts');

function my_strip_scripts($content){

    return preg_replace('#<script(.*?)>(.*?)</script>#is', '', $content);

}
0

Donnez wp_strip_all_tags () un coup. Je crois que cela supprime également le contenu des balises de script.

0
vancoder