WEBOPIXEL

WordPressで指定したタグをエスケープさせない方法

Posted: 2014.11.28 / Category: WordPress 

WordPressでhtmlをエスケープするときesc_htmlを使用しますがこれだと全てのタグをエスケープしてしまいます。
カスタムフィールドの出力などで特定のタグはそのまま出力させたいときがありますよね。

Sponsored Link

wp_kses

すみません。最初に書いておくとエスケープじゃなくて除去です。
で、特定のタグを除去したくない場合は wp_kses というのを使います。
まずは除去しないタグを指定してあげましょう。
何度も使用する可能性がある場合は function.php に書いておくといいと思います。

functions.php

$allowed_html = array(
    'a' => array(
        'href' => array (),
        'target' => array()
    ),
    'br' => array(),
);
    

a,brを除去しないという設定ですね。
たとえば抜粋を表示するにはテンプレートファイルで下記のようにします。

<?php echo wp_kses(get_the_excerpt(), $allowed_html) ?>
    

あらかじめ設定したタグだけ使用できるようにする

WordPressには投稿欄にはあらかじめタグが使用できるように設定してあるわけですが、その設定をそのまま使用できれば楽ですよね。
投稿に使用されているホワイトタグは「wp_kses_allowed_html(‘post’)」で取得できます。

$allowed_html = wp_kses_allowed_html('post');
echo wp_kses(get_the_excerpt(), $allowed_html);
    

wp_kses_allowed_htmlに指定できる引数は「post/user_description/pre_user_description/strip/entities/data」です。