web-dev-qa-db-ja.com

WP_Editor - プラグインオプションへの値の保存 - HTMLの削除

プラグイン設定ページにwp_editor();があります。

TinyMCEの "フォントサイズ"ドロップダウンも有効にしました。

wp_editor();内のテキストをハイライトし、エディタのドロップダウンメニューからフォントサイズを選択した後、フォントサイズは適切に調整されます(エディタ内で直接)。

ただし、update_option();を使用してプラグイン設定を保存し、プラグイン設定ページをリロードすると、<span style="font-size: 18px;">highlighted text</span>が削除され、スパンタグを折り返さずにフォントサイズを調整する「ハイライトテキスト」のみが残ります。

私はwp_editor();/add_option();コードと一緒にupdate_option();コードを調べて、何らかのストリッピング/サニタイズが行われているかどうかを確かめました。

その内容をオプションに保存している間になぜwp_editor(); spanタグが削除されるのか、何か手がかりがありますか?

補足:なんらかの理由でspanタグだけが取り除かれているようです。私はちょうどアンダーラインを使用しようとしました、そしてそれも同様に削除されました。

1
Michael Ecklund

問題

これは、 stripslashes(); を使用する必要がある一般的なケースであることがわかりました。

これをどのように把握しましたか?

PhpMyAdminにログインし、オプションテーブルに移動し、自分のオプション名を見つけて編集しました。

これが私が発見したものです...

s:11:"description";s:90:"<span style=\"text-decoration: underline;\">This is supposed to be underlined text.</span>";

だから私のプラグインは明らかに働いています。それはものをきちんと保存しています。私がwp_editor();に入力したテキストはそこにあります、そして適切なHTMLは私のテキストを同様に包んでいます。

自動的に追加されたスラッシュに注目してください。これが私のプラグインオプションで保存されたwp_editor();からのコンテンツを出力するときに問題を引き起こしていたものです。

単純解

  1. オプションデータを取り出して出力する前に、stripslashes();を使用してください。
  2. これは入力ではなく出力で行われるべきです。
1
Michael Ecklund