Pregunta

Estoy desarrollando un complemento que instalaré para que todos mis clientes hagan que WordPress sea un poco más fácil de usar para ellos. Una de las cosas que cambiará es la configuración predeterminada de TinyMCE. Agregará cosas como underline y justifyfull a la primera fila de tinymce.

Sé que podría usar otros complementos como Tinymce avanzado Para alterar TinyMCE para mis clientes, pero agregan mucha hinchazón innecesario que es susceptible a los problemas durante las actualizaciones. Quiero que esto sea lo más minimalista posible para evitar problemas de actualización.

He escrito este código simple que funciona en su mayoría muy bien:

function mo_change_mce_buttons( $initArray ) {
    $initArray['theme_advanced_buttons1'] = 'bold,italic,underline,strikethrough,|,bullist,numlist,blockquote,|,justifyleft, justifycenter,justifyright,justifyfull,|,link,unlink,wp_more,|,spellchecker,fullscreen,wp_adv';
    return $initArray;
}
add_filter('tiny_mce_before_init', 'mo_change_mce_buttons');

Este código funciona muy bien, excepto por un gran problema. Desactiva cualquier complemento TinyMCE en la fila TinyMCE en cuestión (theme_advanced_buttons1). El complemento de víboros de video Quicktags Por ejemplo, que agrega un botón de YouTube, se elimina utilizando el código anterior.

¿Cómo puedo modificar la primera fila TinyMCE predeterminada usando el código simple en mi propio complemento sin sacrificar la posibilidad de que otros complementos también le agregen botones?

¿Fue útil?

Solución

tiny_mce_before_init es un filtro que obtiene toda la configuración de tinymce, pero hay filtros que actúan en partes más pequeñas, como mce_buttons Solo para los botones. La ventaja aquí es que actúan en matrices, por lo que es fácil agregar o eliminar piezas de ellas. Esto es Cómo VIPERS Video Quicktags lo hace también.

Puede cambiar su código al siguiente fragmento para insertar los botones en los lugares correctos y no eliminar los botones que otros complementos han agregado:

add_filter( 'mce_buttons', 'wpse17686_mce_buttons' );
function wpse17686_mce_buttons( $old_buttons )
{
    $new_buttons = array();
    foreach ( $old_buttons as $button ) {
        $new_buttons[] = $button;
        if ( 'italic' == $button ) {
            $new_buttons[] = 'underline';
        }
        if ( 'justifyright' == $button ) {
            $new_buttons[] = 'justifyfull';
        }
    }
    return $new_buttons;
}
Licenciado bajo: CC-BY-SA con atribución
scroll top