Pregunta:
¿Hay alguna forma de tener varios editores WYSIWYG para un tipo de publicación personalizada? Por ejemplo, si tuviera un diseño de 2 columnas, quisiera tener un editor para una columna y otro editor para la otra.
Respuesta:
Digamos que su tipo de publicación personalizada se llama Properties
, agregaría el cuadro para contener su editor tinyMCE adicional usando un código similar a este:
function register_meta_boxen() {
add_meta_box("wysiwyg-editor-2", "Second Column", "second_column_box",
"properties", "normal", "high");
}
add_action('admin_menu', 'register_meta_boxen');
wysiwyg-editor-2
es el ID que se le habrá aplicado el meta box, Second Column
es el título que tendrá el meta box, second_column_box
es la función que imprimirá el HTML para el meta box, las properties
son nuestra publicación personalizada type, normal
es la ubicación del metabox y high
especifica que debe mostrarse lo más alto posible en la página. (Por lo general, debajo del editor de tinyMCE predeterminado).
Luego, tomando esto como el ejemplo más básico, debe adjuntar el editor tinyMCE a un área de texto. Todavía tenemos que definir nuestra función second_column_box
que imprimirá el HTML para el metabox, por lo que este es un lugar tan bueno como cualquier otro para hacer esto:
function second_column_box() {
echo <<<EOT
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#tinymce").addClass("mceEditor");
if ( typeof( tinyMCE ) == "object" &&
typeof( tinyMCE.execCommand ) == "function" ) {
tinyMCE.execCommand("mceAddControl", false, "tinymce");
}
});
</script>
<textarea id="tinymce" name="tinymce"></textarea>
EOT;
}
Hay un par de problemas que no estoy seguro de cómo superar. El editor tinyMCE estará anidado dentro de un metabox, lo que podría no ser ideal, y no contará con la capacidad de cambiar entre los modos de edición HTML y Visual, así como los comandos de inserción de medios que tiene el editor de publicaciones normal. El cambio de modos parece definirse como una función cuyo primer argumento es el ID, pero, sin embargo, también parece estar codificado en el script wp-tinymce. Es posible usar las funciones de tinyMCE integradas para hacerlo, pero esto cambia el área de texto entre el tinyMCE completo y un área de texto básica, sin ninguno de los botones de inserción HTML de WP.