Wordpressの「プロフィール情報」、カテゴリやタグの「説明」に改行(<br>)や装飾(<style>)、画像などのHTMLタグが使えない場合の対処法です。
Wordpressにはタグやコードを自動的に取り除くためにwp_ksesというフィルター関数があり、これがプロフィールや説明にも使われているのが原因です。
このフィルターを無効化することでHTMLタグが使用できるようになります。
プラグインもあるようですが、簡単なのでfunctions.phpにコードを追記する方法をご紹介します。
この記事の目次
プロフィールや説明でHTMLを使用可能にする
Wordpressの標準仕様ではプロフィール情報やカテゴリの説明、タグの説明でほとんどのHTMLが自動削除されます。
このように改行タグを打ち込んでも…
プロフィールを更新を押すときれいさっぱり<br>が消えてしまいます。
使用可能なHTMLはリンク(<a>)や強調(<strong>)などと限られています。
当然改行タグが使えないので、自己紹介は文字続きとなります。
ポイント
テーマ側でHTMLを使用可能にする設定があるものもあるので、まずはそちらを確認して下さい!
プロフィール情報でHTMLを使用可能にする
プロフィール情報で改行などのタグを使用したい場合は子テーマのfunctions.phpに以下のコードを追加します。
//プロフィールにhtmlタグを使えるようにする remove_filter('pre_user_description', 'wp_filter_kses'); add_filter('pre_user_description', 'wp_filter_post_kses');
一つ目のremove_filter('pre_user_description', 'wp_filter_kses');
だけでHTMLの使用制限はなくなりますが、<script>などの使う必要のないコードを制限するために二つ目のコードを追加しています。
カテゴリやタグの説明でHTMLを使用可能にする
カテゴリやタグの説明を表示するテーマを使用している場合、この説明内にもHTMLの制限がかかっており、プロフィール情報と同じくHTMLタグが自動削除されてしまいますので対策方法です。
同じく子テーマのfunctions.phpに以下のコードを追加します。
//カテゴリタグの説明にhtmlタグを使えるようにする remove_filter( 'pre_term_description', 'wp_filter_kses' ); add_filter( 'pre_term_description', 'wp_filter_post_kses' );
ユーザーディスクリプションがタームディスクリプションに変わっているだけです。
こちらも使う必要がなさそうなコードを制限するために二行目を追加しています。
remove_filterについて
ここで使っているremove_filterは特定のフィルターフックで使っている関数を除去する関数です。
wp-includes > plugin.php
にこの関数が記述されています。
wp_ksesについて
フルネームは「Kses Strips Evil Scripts」です。
どのようなHTMLがプロフィールや説明で使用できるのかはコードを覗くと良く分かります。
wp-includes > kses.php
の中にこのwp_kses関数で許容されているタグが引数として記述されています。
KSES は悪意あるスクリプトを除去します。すべての信頼できない HTML (投稿文、コメント文など) は wp_kses() を通すべきです。
Codexにも記述されている通り、本来サイトに影響を与える悪意のあるスクリプトを自動的に削除して取り除く機能のようです。
brタグってそんなに脅威なの!?
まとめ
Wordpressのプロフィール情報やカテゴリ、タグの説明でHTMLタグが自動削除されて使用できない場合はksesをfunctions.phpで無効にしましょう。
最近のテーマではもともとHTMLを使用できるようにしてあるものが増えてきたので、使う場面は減ってきているのかもしれません…