コメント/投稿で許可されているHTMLタグを削除するにはどうすればよいですか。どういうわけか、私のテーマのfunctions.php
に置かれた以下のコードはうまくいきませんでした:
add_action('init', 'my_html_tags_code', 10);
function my_html_tags_code() {
define('CUSTOM_TAGS', true);
global $allowedposttags, $allowedtags;
$allowedposttags = array(
'strong' => array(),
'em' => array(),
'pre' => array(),
'code' => array(),
'a' => array(
'href' => array (),
'title' => array ())
);
$allowedtags = array(
'strong' => array(),
'em' => array(),
'a' => array(
'href' => array (),
'title' => array ())
);
}
<div>
や<pre>
のようなタグはコメント時にまだ利用可能です。
コメントが投稿される前にいくつかのチェックを実行できるようにするフィルタフックがありますので、それを使用することもできます。
add_filter('preprocess_comment', 'wpse_158147_check_new_comment');
function wpse_158147_check_new_comment($commentdata){
$commentdata['comment_content'] = preg_replace("/<tag(.*?)>(.*)<\/tag>/", "$2", $commentdata['comment_content']);// or str_replace
return $commentdata;
}
ここで "tag"は削除されます(ここであなたの特定のタグに置き換えられます)。
コメントタグについては後でフックにフックしてみてください。
function my_comment_tags() {
global $allowedtags;
$allowedtags = array(
'strong' => array(),
'em' => array(),
'a' => array(
'href' => array (),
'title' => array ())
);
}
add_action('comment_post', 'my_comment_tags');
このコードはそれらをすべて削除しています。関数ファイルに含まれるコードに、返したいものを単に追加し直すだけです。
add_filter( 'comment_form_defaults', 'wpsites_remove_comment_form_allowed_tags' );
function wpsites_remove_comment_form_allowed_tags( $defaults ) {
$defaults['comment_notes_after'] = '';
return $defaults;
}