it-swarm.com.de

HTML-Code im Feld Benutzerdefiniert

Ich verwende ein benutzerdefiniertes Feld, um Bilder in einem Schieberegler für jeden Beitrag anzuzeigen, aber wenn ich den Beitrag aktualisiere, nachdem ich den HTML-Code in das benutzerdefinierte Feld eingegeben habe, verschwindet der Code. Ich gehe davon aus, dass es eine Art Filter gibt, der HTML-Code aus benutzerdefinierten Feldern entfernt, wenn ein Beitrag gespeichert wird. Gibt es eine Möglichkeit, dies zu umgehen, ohne ein Plugin zu verwenden?

Vielen Dank!

Bearbeiten: Die Informationen werden mit folgendem Code gespeichert:

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"]);
}

Den vollständigen functions.php Code finden Sie hier (Pastebin).

2
Anders Norén

AKTUALISIERTE ANTWORT

Die korrekte Funktion, die im Kontext von WordPress und der dafür vorgesehenen API verwendet werden soll, lautet:

esc_textarea

Somit würde Ihr Code so etwas widerspiegeln;

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

Obwohl htmlspecialchars und htmlentities gültig sind und esc_textarea trotzdem htmlspecialchars umschließt, ist es besser, den offiziellen API-Aufruf zu verwenden.

Ich habe meine ursprüngliche Antwort unten zu Referenzzwecken hinterlassen, jedoch die relevanten Funktionen nach Bedarf ausgetauscht.

URSPRÜNGLICHE ANTWORT

Ersetzen Sie in Ihrem bei Pastebin geschnippten images_box -Funktion durch (Beginn der Zeile 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
}

Sie haben den Wert Ihrer Eingabe zwischen den <textarea> ECHO INPUT HERE </textarea>-Tags nicht wiederholt, sodass der Eindruck entsteht, dass Sie überhaupt nichts eingegeben haben.

Schließen Sie Ihre Eingabe auch mit htmlspecialchars ab.

$city = $custom["images"][0]; sollte auch $images = $custom["images"][0]; sein (Zeile 68)

2
userabuser