web-dev-qa-db-ja.com

カスタムフィールドのHTMLコード

各投稿のスライダーに画像を表示するためにカスタムフィールドを使用していますが、カスタムフィールドにHTMLコードを入力した後で投稿を更新すると、コードが消えます。私は、投稿が保存されたときにカスタムフィールドからHTMLコードを削除するある種のフィルタがあると思います。プラグインを使わずにそれを回避する方法はありますか?

ありがとうございます。

編集:情報は次のコードを使用して保存されます。

function save_details(){
    global $post;

    update_post_meta($post->ID, "ptime", $_POST["ptime"]);
    update_post_meta($post->ID, "services", $_POST["services"]);
    update_post_meta($post->ID, "tools", $_POST["tools"]);
    update_post_meta($post->ID, "url", $_POST["url"]);
    update_post_meta($post->ID, "images", $_POST["images"]);
}

あなたは完全なfunctions.php code ここ (ペーストビン)を見つけることができます。

2
Anders Norén

更新された答え

WordPressおよびこの目的のために意図されたAPIに関連して使用する正しい関数は以下のとおりです。

esc_textarea

したがって、あなたのコードはこのようなものを反映するでしょう。

<textarea><?php echo esc_textarea($images);?></textarea>

htmlspecialcharshtmlentitiesの使用は有効ですが、とにかくesc_textareahtmlspecialcharsをラップするとしても、公式のAPI呼び出しを使用する方が適切です。

私は最初の答えを参考のために残しましたが、必要に応じて関連する関数を入れ替えます。

もともとの答え

あなたの切り取ったPastebinの中で、あなたのimages_box関数を (65行目の先頭) に置き換えます。

function images_box($echo = FALSE){
  global $post;
  $custom = get_post_custom($post->ID);
  $images = $custom["images"][0];
  ?>
  <textarea name="images" cols="100" rows="10">

      <?php echo htmlspecialchars($images); //Hi, I'm your input! ?> 

  </textarea>
  <?php
}

<textarea> ECHO INPUT HERE </textarea>タグの間の入力値をエコーし​​ていなかったので、何も入力していないようです。

入力を htmlspecialchars で囲む

また$city = $custom["images"][0];$images = $custom["images"][0]; (68行目) であるべきです

2
userabuser