Question

Je développe un plugin que je vais installer pour tous mes clients pour rendre WordPress un peu plus facile à utiliser pour eux. L'une des choses qu'il va changer est la configuration par défaut TinyMCE. Il va ajouter des choses comme underline et justifyfull à la première ligne de TinyMCE.

Je sais que je pourrais utiliser d'autres plugins comme TinyMCE avancée pour modifier mon TinyMCE clients, mais ils ajoutent beaucoup de unneccessary ballonnement qui est sensible à des problèmes lors de mises à jour. Je veux faire cela comme possible minimalistes afin d'éviter les problèmes de mise à jour.

J'ai écrit ce code simple qui fonctionne la plupart du temps grand:

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');

Ce code fonctionne très bien sauf un énorme problème. Il désactive tous les plugins TinyMCE sur la ligne de TinyMCE en question (theme_advanced_buttons1). Le plugin vidéo Vipers par exemple des balises prédéfinies, ce qui ajoute un bouton-YouTube, est enlevé en utilisant le code ci-dessus.

Comment puis-je modifier la valeur par défaut première ligne de TinyMCE en utilisant le code simple dans mon propre plug-in sans sacrifier la possibilité pour d'autres plugins pour ajouter des boutons à elle aussi?

Était-ce utile?

La solution

tiny_mce_before_init est un filtre qui obtient toute la configuration TinyMCE , mais il y a des filtres qui agissent sur les petites parties de celui-ci, comme mce_buttons seulement les boutons . L'avantage ici est qu'ils agissent sur les tableaux, il est donc facile d'ajouter ou de supprimer des parties d'eux. Ceci est comment Vipers vidéo le fait des balises prédéfinies aussi.

Vous pouvez changer votre code à l'extrait suivant pour insérer les boutons aux bons endroits et ne pas supprimer des boutons que d'autres plugins ont ajouté:

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top