web-dev-qa-db-ja.com

HTMLとテキストをデータベースに保存する方法

私は2つの分野があります。 1つ目はプレーンテキスト用(ただし特殊文字付き)、2つ目はhtmlコンテンツ用(wp_editorが使用されます)です。両方とも後に phpmailer に必要です。

<textarea style="width:100%;height:200px;" name="doi-altbody"><?php echo $epn_doi_altbody; ?></textarea>

wp_editor( $epn_doi_body, 'doi-body', array( 'editor_height' => '300px' ) );

1)フォームを送信した後にそれらを正しく保護し、既存のカスタムテーブルにデータベースに保存する方法を教えてください。 (esc_attr、sanitize_text_field ...)

2)そして私は正確かつ元の型付きのバージョンでデータベースからコンテンツを出力したい場合:どのように私はこれを作るのですか? (wpautop ...)

私は最後の日にいくつかのことを試みました。しかし、それは私が必要としたようには決してうまくいきませんでした。

2
wassereimer
<textarea style="width:100%;height:200px;" name="doi-altbody"><?php echo $epn_doi_altbody; ?></textarea>

wp_editor( $epn_doi_body, 'doi-body', array( 'editor_height' => '300px' ) );

データベースに保存されたのと同じ結果を得るには、出力を変更する必要があります。

テキストエリアの場合:

wp_specialchars_decode( $epn_doi_altbody, $quote_style = ENT_QUOTES )

Wp_editorの場合:

wpautop( $epn_doi_body );
0
wassereimer
  1. wpdb insertおよびupdate APIを使用するだけで、ドキュメントに記載されているエスケープ処理やサニタイズ処理は不要です。生データだけが必要です。

データ :(配列)置換するデータ(列=>値の組)。 $ data列と$ data値はどちらも "raw"である必要があります(どちらもSQLエスケープしないでください)。

何かのようなもの:

    $wpdb->insert(
      $wpdb->prefix . "myTable",
      array(
        "doiBody" => $_POST['doi-body']
      ),
      array( "%s" )
    );
  1. あなたがwp_editorテキストエリアに出力しているなら、wpautopの使用は必要ではありません、私はesc_attr( $output )だけで十分だろうと思います。

これがどういうわけか役立つことを願っています。

0
Samuel Elh