Come includere l'editor TinyMCE nel frontend?
Sto cercando di aggiungere un editor TinyMCE nel mio frontend dove gli utenti possono pubblicare, ma finora non ho avuto successo. Ecco il codice:
PHP:
add_action('wp_print_scripts', 'my_enqueue_scripts');
function my_enqueue_scripts() {
wp_enqueue_script( 'tiny_mce' );
if (function_exists('wp_tiny_mce')) wp_tiny_mce();
}
JavaScript:
jQuery(document).ready(function(){
tinyMCE.init({
mode : "textareas",
theme : "simple",
/*plugin : "autolink, liste, correttore ortografico, stile, layer, tabella, advhr, advimage, advlink, emozioni, iespell, inlinepopups, insertdatetime, anteprima, media, cercasostituisci, stampa, menucontestuale, incolla, direzionalità, schermo intero, nonmodificabile, caratterivisuali, nonseparabile, xhtmlxtras, modello",*/
editor_selector :"editor"
});
});
HTML:
<textarea rows="8" cols="40" name="description" id="editor" class="required"><?php echo $description;?></textarea>
Problema: L'editor di testo non si aggiunge alla textarea. Nonostante il file js di TinyMCE venga caricato.
Beh, grazie a wp 3.3 ora abbiamo la funzione wp_editor()
per farlo :)

Sì, tranne che restituisce direttamente l'editor, invece di permetterti di usarlo in uno shortcode...

Puoi usarlo in uno shortcode utilizzando le funzioni ob_content di PHP. Queste funzioni ti permettono di catturare l'output in una variabile. In questo modo: ob_start(); include( static::getTemplatePath() . '/' . $templatePath . '.php'); $template = ob_get_contents(); ob_end_clean(); return $template;

editor_selector
è utilizzato per puntare alle classi, non agli id.
Inoltre, quando si utilizza editor_selector
, è necessario impostare mode: "specific_textareas"
per farlo funzionare.
Consulta http://tinymce.moxiecode.com/wiki.php/Configuration:editor_selector
Quindi il tuo JavaScript e HTML dovrebbero essere così:
jQuery(document).ready(function(){
tinyMCE.init({
mode : "specific_textareas",
theme : "simple",
/*plugins : "autolink, lists, spellchecker, style, layer, table, advhr, advimage, advlink, emotions, iespell, inlinepopups, insertdatetime, preview, media, searchreplace, print, contextmenu, paste, directionality, fullscreen, noneditable, visualchars, nonbreaking, xhtmlxtras, template",*/
editor_selector :"tinymce-enabled"
});
});
<textarea rows="8" cols="40" name="description" id="editor" class="tinymce-enabled required"><?php echo $description;?></textarea>

Anche se la risposta di @maryisdead potrebbe essere corretta, ti darò un altro suggerimento: prima assicurati che ci sia solo un elemento nella tua pagina con l'id="editor", poi configura tinymce in questo modo:
tinyMCE.init({
...
mode : "exact",
elements : "editor"
});
Inoltre, usa jQuery invece di $ nel tuo codice JavaScript per essere sicuro di chiamare i metodi e i selettori di jQuery.
