WordPressを少し使いやすくするために、すべてのクライアントにインストールするプラグインを開発しています。変更されることの1つは、デフォルトのTinyMCE設定です。最初のTinyMCE行にunderline
やjustifyfull
のようなものを追加します。
私は私のクライアントのためにTinyMCEを変更するのに TinyMCE Advanced のような他のプラグインを使うことができることを知っています。更新の問題を避けるために、これをできる限り最小限に抑えるようにします。
私はこの簡単なコードを書きましたが、大体うまくいきます:
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');
このコードは、1つの大きな問題を除いて非常にうまく機能します。問題のTinyMCE行にあるTinyMCEプラグインを無効にします(theme_advanced_buttons1
)。 たとえば、YouTubeボタンを追加するVipers Video Quicktagsプラグイン は、上記のコードを使用して削除されます。
他のプラグインがボタンを追加する可能性を犠牲にせずに、自分のプラグインの単純なコードを使用してデフォルトの最初のTinyMCE行を変更する方法を教えてください。
tiny_mce_before_init
はTinyMCE全体の設定を取得するフィルタです しかし、ボタンのためだけの mce_buttons
のように、その小さな部分に作用するフィルタがあります 。ここでの利点は、それらが配列に作用するということですので、それらに部分を追加したり削除したりするのは簡単です。これは Vipers Video Quicktagsがどのように行うのか でもあります。
適切な場所にボタンを挿入し、他のプラグインが追加したボタンを削除しないように、コードを次のスニペットに変更できます。
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;
}