web-dev-qa-db-ja.com

コメントフォームを許可するタグのフィルタリング

コメント/投稿で許可されている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>のようなタグはコメント時にまだ利用可能です。

2
Yoav Kadosh

コメントが投稿される前にいくつかのチェックを実行できるようにするフィルタフックがありますので、それを使用することもできます。

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"は削除されます(ここであなたの特定のタグに置き換えられます)。

1
JMau

コメントタグについては後でフックにフックしてみてください。

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');
0
sakibmoon

このコードはそれらをすべて削除しています。関数ファイルに含まれるコードに、返したいものを単に追加し直すだけです。

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;

}
0
Brad Dalton