Necesitaba mucho más código para que funcionara, y también recibía un error de JavaScript: Deprecated TinyMCE API call: <target>.onKeyUp.add(..)
esto fue causado por una actualización de WordPress de 3.xa 4. Entonces tuve que hacerlo clear my browser cache
primero.
En primer lugar, agregué una devolución de llamada al filtro wp tiny_mce_before_init
en mi archivo functions.php, esto me permitió agregar una función de devolución de llamada js para que se active cuando se inicializan los editores:
add_filter( 'tiny_mce_before_init', array( $obj, 'filter_cb_mce_before_init' ) );
/**
* Filter cb to add event listeners to tinymce editor.
* @param array $init An array of setup js functions as strings.
* @return array Returns new array of js function strings.
*/
function filter_cb_mce_before_init( array $init ) {
$init['setup'] = "function(ed){
if(get_tinymce_content) //not required, I use it as flag to check if on correct page
ed.on('change', function(){ get_tinymce_content() });
}";
return $init;
}
A continuación, la función de JavaScript para hacer lo que quiera con el contenido cuando cambie. Agregue este javascript usando wp_enqueue_scripts a la página que desee.
/**
* Get the content of the tinyMCE editor.
* @link http://wordpress.stackexchange.com/questions/42652/how-to-get-the-input-of-a-tinymce-editor-when-using-on-the-front-end
* @return {string} Returns the content
*/
function get_tinymce_content(){
//change to name of editor set in wp_editor()
var editorID = 'my_editor_id';
if (jQuery('#wp-'+editorID+'-wrap').hasClass("tmce-active"))
var content = tinyMCE.get(editorID).getContent({format : 'raw'});
else
var content = jQuery('#'+editorID).val();
console.log(content);
}
El código funcionó cuando usé lo siguiente para imprimir el editor en cualquier página:
<?php wp_editor( @$event->description, 'my_editor_id', array(
'media_buttons' => false,
'textarea_name' => 'data[description]',
'quicktags' => array("buttons"=>"link,img,close"),
) ); ?>
val()