Die Designoptionen können nicht gespeichert werden, wenn TinyMCE für den Textbereich aktiviert ist

Auf der Seite, die ich gerade entwickle, habe ich eine Design-Optionen-Seite erstellt (unter Aussehen). Alles, was auf dieser Seite angezeigt wird, ist ein Textbereich, so dass der Kunde einen zusammenfassenden Text hinzufügen kann, der über seinen Posts erscheint.

Ich benutze TinyMCE in diesem Textbereich, damit sie ihren Text formatieren können. Wenn ich TinyMCE aktiviert habe, macht die Schaltfläche “Optionen speichern” beim Klicken nichts. Wenn ich die folgenden Zeilen in meiner theme-options-Datei auskommentiere, um TinyMCE zu deaktivieren, wird sie korrekt gespeichert.

 "large-text" ) ); ?> 

Hinweis: Der TinyMCE lädt und zeigt korrekt an – Text kann formatiert, nur nicht gespeichert werden.

Irgendeine Idee was könnte das verursachen?

Ich benutze WordPress 3.2.

Vielen Dank!

Bearbeiten: Der gesamte Code in meiner theme-options.php- Datei ist wie folgt

  
<?php screen_icon(); echo "

" . __( ' Intro/Welcome Text', 'client' ) . "

"; ?>

"large-text" ) ); ?>

<input type="submit" class="button-primary" value="" />

<?php } /** * Sanitize and validate input. Accepts an array, return a sanitized array. */ function theme_options_validate( $input ) { global $select_options, $radio_options; // Our checkbox value is either 0 or 1 if ( ! isset( $input['option1'] ) ) $input['option1'] = null; $input['option1'] = ( $input['option1'] == 1 ? 1 : 0 ); // Say our text option must be safe text with no HTML tags $input['sometext'] = wp_filter_nohtml_kses( $input['sometext'] ); // Our select option must actually be in our array of select options if ( ! array_key_exists( $input['selectinput'], $select_options ) ) $input['selectinput'] = null; // Our radio option must actually be in our array of radio options if ( ! isset( $input['radioinput'] ) ) $input['radioinput'] = null; if ( ! array_key_exists( $input['radioinput'], $radio_options ) ) $input['radioinput'] = null; // Say our textarea option must be safe text with the allowed tags for posts $input['sometextarea'] = wp_filter_post_kses( $input['sometextarea'] ); return $input; } // adapted from http://planetozh.com/blog/2009/05/handling-plugins-options-in-wordpress-28-with-register_setting/

Solutions Collecting From Web of "Die Designoptionen können nicht gespeichert werden, wenn TinyMCE für den Textbereich aktiviert ist"

Welche Ausgabe erhalten Sie, wenn Sie Folgendes zum Anfang des Bereinigungsrückrufs hinzufügen:

 var_dump( $input ); die; 

zB füge es hier hinzu:

 function theme_options_validate( $input ) { var_dump( $input ); die; 

Vergleichen Sie die Ergebnisse mit und ohne TinyMCE . Lassen Sie uns herausfinden, was sich ändert.

Außerdem: das hängt nicht direkt mit dem Problem zusammen, das Sie haben (zumindest denke ich, dass es nicht so ist), aber Ihr Bereinigungsrückruf saniert nicht die Eingaben, die Sie ihm senden, client_theme_options['intro_text'] . Es scheint ein Konglomerat von Copy-Pasta zu sein, beispielsweise Desinfektionsfunktionen.

Sie müssen Ihre tatsächliche Option wp_filter_post_kses() , wahrscheinlich mit einem wp_filter_post_kses() Filter, da Sie HTML-Eingaben wp_filter_post_kses() .

BEARBEITEN

Vielleicht haben Sie ein ähnliches Problem mit diesem anderen SO-Fragesteller , bei dem die Textarea-Daten nicht übermittelt werden, weil TinyMCE die Textarea entführt?

Die Lösungen zu dieser Frage enthalten:

  • vor dem Senden der Nachricht tinyMCE.triggerSave ();
  • Und dieser Vorschlag:

Fügen Sie dem Formular ein verstecktes Feld hinzu:

  

Bevor Sie das Formular abschicken, holen Sie sich die Daten aus dem Editor und legen Sie es in das versteckte Feld:

 $('#question_html').val(tinyMCE.get('question_text').getContent()); 

Hier ist eine weitere SO-Frage zum selben Thema . Es schlägt vor, diesen Skriptcode zu verwenden:

 var editor = tinymce.get( editor_id); editor.save(); // writes content back to the textarea // you may now use jQuery or editor.getContent(); to acces the content 

(Was ich denke, ist ähnlich wie die anderen Vorschläge.)

Nicht sicher, ob einige von denen hilfreich wären?

Ich hatte das gleiche Problem und nach einem Tag der Frustration fand ich, dass, wenn ich das wp_tiny_mce innerhalb der Tabelle wp_tiny_mce es funktionierte.

  
< ?php wp_tiny_mce( false , // true makes the editor "teeny" array( "editor_selector" => "mce-text", 'width' => '80%', 'theme' => 'advanced', 'skin' => 'wp_theme' ) ); ?>