WordPressでプロフィール情報やカテゴリの説明にHTMLを使用する方法。HTMLが使えない(消える)のは仕様です。

プロフィール情報にHTMLを使えるようにする2

WordPressの「プロフィール情報」、カテゴリやタグの「説明」に改行(<br>)や装飾(<style>)、画像などのHTMLタグが使えない場合の対処法です。

WordPressにはタグやコードを自動的に取り除くためにwp_ksesというフィルター関数があり、これがプロフィールや説明にも使われているのが原因です。

このフィルターを無効化することでHTMLタグが使用できるようになります。

プラグインもあるようですが、簡単なのでfunctions.phpにコードを追記する方法をご紹介します。

プロフィールや説明でHTMLを使用可能にする

WordPressの標準仕様ではプロフィール情報やカテゴリの説明、タグの説明でほとんどのHTMLが自動削除されます。

プロフィール情報にHTMLを使えるようにする1

ユーザー > プロフィール情報に改行を記述

このように改行タグを打ち込んでも…

プロフィール情報にHTMLを使えるようにする2

更新(保存)するとHTMLが削除されてしまう

プロフィールを更新を押すときれいさっぱり<br>が消えてしまいます。
使用可能なHTMLはリンク(<a>)や強調(<strong>)などと限られています。

プロフィール情報にHTMLを使えるようにする3当然改行タグが使えないので、自己紹介は文字続きとなります。

テーマ側でHTMLを使用可能にする設定があるものもあるので、まずはそちらを確認してください。

プロフィール情報でHTMLを使用可能にする

プロフィール情報で改行などのタグを使用したい場合は子テーマのfunctions.phpに以下のコードを追加します。

//プロフィールにhtmlタグを使えるようにする
remove_filter('pre_user_description', 'wp_filter_kses');
add_filter('pre_user_description', 'wp_filter_post_kses');
プロフィール情報にHTMLを使えるようにする4

functions.phpにコードを追加(場所はどこでもOK)

一つ目の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' );
プロフィール情報にHTMLを使えるようにする5

こちらも記述する場所はどこでもOK

ユーザーディスクリプションがタームディスクリプションに変わっているだけです。
こちらも使う必要がなさそうなコードを制限するために二行目を追加しています。

remove_filterについて

プロフィール情報にHTMLを使えるようにする6

remove_filterのコード

ここで使っているremove_filterは特定のフィルターフックで使っている関数を除去する関数です。

wp-includes > plugin.php

にこの関数が記述されています。

wp_ksesについて

フルネームは「Kses Strips Evil Scripts」です。
どのようなHTMLがプロフィールや説明で使用できるのかはコードを覗くと良く分かります。

プロフィール情報にHTMLを使えるようにする7

wp_ksesで許容されているコード

wp-includes > kses.php

の中にこのwp_kses関数で許容されているタグが引数として記述されています。

KSES は悪意あるスクリプトを除去します。すべての信頼できない HTML (投稿文、コメント文など) は wp_kses() を通すべきです。

Codexにも記述されている通り、本来サイトに影響を与える悪意のあるスクリプトを自動的に削除して取り除く機能のようです。
brタグってそんなに脅威なの!?

まとめ

WordPressのプロフィール情報やカテゴリ、タグの説明でHTMLタグが自動削除されて使用できない場合はksesをfunctions.phpで無効にしましょう。

最近のテーマではもともとHTMLを使用できるようにしてあるものが増えてきたので、使う場面は減ってきているのかもしれません…

-Wordpress
-

© 2021 ソロ学