公開されているサンプルコードを試した際に一度は問題なかったと記憶しているのですが、後に試すと意図しない形になっていたのでメモとして。
バッドノウハウな可能性があります。
前提と実現したいこと
上記の参考コードを使用する前提で、以下の問題を確認。
- ビジュアルエディタで入力後、保存するとHTMLがエスケープされた状態に変化する
つまりHTMLタグの<が<;のようにエスケープされてしまいます。
コード的には以下のようにフィルターを取り除くことでこの動作にならないのではと思うのですが、記述していても改善せず。
remove_filter( 'pre_term_description', 'wp_filter_kses' );
remove_filter( 'term_description', 'wp_kses_data' );
ただし試した当初はこうではなかったような気がするのと、記事では特に注記もないので参考にしたコードに問題があるという意図はありません。
対応策
wp_editor(wp_kses_post($tag->description, ENT_QUOTES, 'UTF-8'), 'cat_description', $settings);
// ↑
// 上記を以下のように変更する
// ↓
wp_editor(wp_kses_post(html_entity_decode($tag->description, ENT_QUOTES, 'UTF-8')), 'cat_description', $settings);
場当たり的な感が否めませんが、html_entity_decode()を使ってタグを元に戻しているという感じです。
参考URL
- 関数リファレンス/wp editor – WordPress Codex 日本語版
- php – Tinymce error page category in WordPress – Stack Overflow
- PHP: html_entity_decode – Manual
結び
対応はできましたが、どうしてこうなったのか原因は突き止められていません。
記憶にある状態ではvar_dump($tag->description)で確認すると改行やHTMLがそのままの見た目になっていたと思うのですが、当記事の問題を確認した時点では改行などはなくなっておりHTMLタグも見えている状態です。
つまりエディタ欄の保存時に処理されていることになると思うのですが、その部分に影響与えるような記述は見当たらず。
0人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。