web-dev-qa-db-ja.com

wp_kses_postは<script>タグのみを削除し、その内容は削除しません

内容を含めて<script>タグを削除する方法はありますか?

wp_kses_postはタグを削除するだけで、その内容はページに表示されたままです。

ありがとうございました

2
Alex Dumitru

KSESは、innerHTMLの表示を妨げる​​のではなく、望ましくない、潜在的に危険なタグの実行を防ぐように設計されています。コンテンツをブロックするには、

- 1コンテンツを削除するために何らかの文字列操作またはxmlDOM操作を使用したカスタム関数。または

- 2タグが含まれている投稿をブロックし、投稿が失敗した理由と、実行タグとしてではなくチュートリアルで使用するときにHTMLコードを使用してスクリプトタグをレンダリングするための手順をブロックする機能。

1番はオーバーヘッドが大きいため、パフォーマンスの問題が生じる可能性があります。パフォーマンスを最適化することが問題である場合、またはサイトに複数のユーザーによる投稿が多い場合は、#2がより現実的な解決策である可能性があります。

2
Dallas

これが私のサイトで画像や段落タグを削除するために使用しているものです。これは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; ?>

$new_content行は、$old_contentの後にリストされているタグを除くすべてのHTMLタグを削除します。

1
Gregory Schultz

投稿内容をフィルタリングするには、 preg_replace() を使用することをお勧めします。

add_filter('the_content', 'my_strip_scripts');

function my_strip_scripts($content){

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

}

wp_strip_all_tags() を撃ってください。スクリプトタグの内容も削除されると思います。

0
vancoder