こんにちは私はユーザーが彼らが既に投稿やページからwp_editor()を使って慣れているエディタの便利さでHTMLメールを作成することを許可する設定画面を持っています。
値が返されるときに引用符で囲まれているテキストを保存しようとした場合を除いて、すべてうまく機能しているようです。これは、wp_kses_post();データをサニタイズしますが、ユーザーが引用符付きのHTML Eメールを作成したいとしたらどうでしょうか。
Str_replaceを実行できることはわかっていますが、別の方法はありますか?私もwp_kses_post()を使うべきです。見積もりを許可する予定がある場合
wp_editorコード:
wp_nonce_field('tld_wcdpue_settings_nonce_action', 'tld_wcdpue_settings_nonce_field');
$tld_wcdpue_settings_email_content = get_option('tld_wcdpue_settings_email_content');
wp_editor( $tld_wcdpue_settings_email_content, 'tld_wcdpue_settings_wpeditor', array( 'wpautop' => false ) );
wp_editor保存コード:
if( isset(//does authentication here) ){
update_option( 'tld_wcdpue_settings_email_content', wp_kses_post( $_POST['tld_wcdpue_settings_wpeditor'] ) );
}
これがDBに保存されるとエスケープされるので、戻り値は次のとおりです。
私は単純にstr_replaceを実行できることを知っていますが、それはwp_kses_postの目的を無効にしているのではないでしょうか?この場合でもそれを使用すべきですか?また、データベースからデータを取得するときにエスケープしていないことに気付きました。エディタでHTMLをレンダリングしたいので、どうすればよいのかわかりません。
Wordpressは、スーパーグローバル変数で見付かった引用符を常にエスケープします。それは https://developer.wordpress.org/reference/functions/wp_magic_quotes/ で行われます。
あなたはそれをDBに保存する前にstripslashes
で取り除きたいと思うでしょう。何かのようなもの
update_option( 'tld_wcdpue_settings_email_content', wp_kses_post( stripslashes($_POST['tld_wcdpue_settings_wpeditor'] ) ));
wp_kses_post()
を使う必要があるとは思わない。
update_option()
はsanitize_option()
を実行します。
それをテストして、何が起こるのか私に知らせてください。