WordPressプラグインの管理画面にビジュアルリッチエディターをつける…のつづき

前回の記事では、WordPressの自作プラグインの管理用ページにビジュアルリッチエディターを設置する方法をご説明しましたが、今回はビジュアルリッチエディターで作成されたHTMLコンテンツを実際に利用するための方法です。

保存する際に必要な処理

私は、SQLインジェクションに対する処理以外はこのタイミングでは特に行っていません。

サニタイズするタイミングは、データ受付時ではなく、HTML出力直前に例外なく行うこと

$wpdb->prepare() は必ず使いましょう!

表示する前に必要な処理

もっとも手っ取り早いのは、WordPress本体が投稿やページなどに適用しているフィルターをそのまま通すことです。

$html = apply_filters('the_content', $html);

こうすることで、ショートコードなども動作するようになります。

しかし、コメント機能などのように利用可能なHTMLを限定したい場合もあると思います。

その場合には、以下のような行を追加することでWordPress本体のコメントで許可されているHTMLと同じ条件でフィルターがかけられます。

$html = wp_kses_data($html);

一方でリスクがあるHTML以外はなるべく使わせてあげたいけど、ユーザーは信用できない場合には、以下のようなフィルターを通すとJavaScriptやiframeなどが取り除かれます。

$html = wp_kses_post($html);

許可するHTML要素や属性を独自に設定したい場合には、wp_kses() 関数で可能です。

http://codex.wordpress.org/Function_Reference/wp_kses

最後に、the_content フィルターを通さない場合は、以下の処理を忘れると改行が失われますのでご注意ください。

$html = wpautop($html);

ビジュアルリッチエディター内にコンテンツを表示する場合の処理

コンテンツを修正する画面など、ビジュアルリッチエディター内に既存のコンテンツとして表示する場合、前回の記事でご紹介した the_editor() 関数を使用すれば必要最低限のフィルターは、the_editor_content フィルターで自動的にかけてもらえます。

ただし、利用可能なHTMLを限定するために、wp_kses_*() 関数を用いる場合には、事前にかけてから the_editor() 関数に渡す必要があります。

最後に

もし可能ならカスタム投稿タイプを使うのが一番ベターです…