WordPressのカテゴリ説明文にHTMLタグを含める方法

WordPressのカテゴリには「説明(description)」項目があります。この部分に書いた文章は
[source=’php’]
< ?php category_description(); ?>
[/source]
の命令を使えば呼び出せます。

これをうまく使うことで、カテゴリの内容ごとにトップページを編集したりすることも可能です。CMSとしてWordPressを使うなら、かなり便利な機能です。

ですが、一つだけ問題があります。初期の状態では、HTMLタグが保存できない(勝手に消されてしまう)のです。また、改行の調整なども不可能なため、そのままでは見栄えが悪くなってしまいます。

ということで、それを改善する方法を簡単に紹介してみます。

もしかすると誰かプラグインとか作っているかもしれませんが…今回は直接、ソースコードをいじってみます。参考にしたのは、WordPress.orgのサポート記事、「Enable HTML including < .div>, < .p>, and < .img> in Category Descriptions」。

WordPress 2.2の場合

(2.1以前は試してません…)

wp-includes/default-filters.php の60行目あたりにある、

[source=’php’]
add_filter(‘pre_category_description’, ‘wp_filter_kses’);
[/source]

の項目を

[source=’php’]
// add_filter(‘pre_category_description’, ‘wp_filter_kses’);
[/source]

とコメントアウトします。これで完成。

WordPress2.3の場合

2.3の場合、編集するファイルは同じdefault-filters.phpですが、編集する場所が変わります。

14行目付近にある

[source=’php’]
// Kses only for textarea saves

$filters = array(‘pre_term_description’, ‘pre_link_description’, ‘pre_link_notes’, ‘pre_user_description’);
foreach ( $filters as $filter ) {
add_filter($filter, ‘wp_filter_kses’);
}
[/source]

という部分において、
[source=’php’]
// add_filter($filter, ‘wp_filter_kses’);
[/source]
とコメントアウトすればOKです。

バージョンアップしてこのファイルが書き変わってしまうと、また手直しする必要がありますが…自分の手でカスタマイズできる、というのは楽しいですよね。

おまけ

WordPress2.3の場合、ソースコードを見ると

  • pre_link_description
  • pre_link_notes
  • pre_user_description

の部分についてもフィルターを外している事が分かります。言い換えれば、これに該当する部分(おそらく前者2つがリンクリスト内の紹介文、最後がユーザの紹介文)でも同じようにHTMLタグを利用することができるわけです。

ちょっとしたリンク集を作ったりするのにも役立つかもしれません。

編集後記

ここ数日、冷え切ってますね〜…。みなさま、お体には気を付けましょう。。