web-dev-qa-db-ja.com

WordPress TinyMceエディタとそのボタンのカスタマイズ

私はWordPressの中でTinyMceエディタを切り取ろうとしていて、私が行ったより古いWPサイトからこのコードを取りましたが、設定したボタンは機能しないようです、私は持っています:

add_filter( 'tiny_mce_before_init', 'blm_format_tiny_mce' );

function blm_format_tiny_mce( $in ) {
    $in['remove_linebreaks']            = true;
    $in['convert_newlines_to_brs']      = false;
    $in['keep_styles']                  = true;
    $in['tabfocus_elements']            = 'major-publishing-actions';
    $in['paste_remove_styles']          = false;
    $in['paste_remove_spans']           = true;
    $in['paste_strip_class_attributes'] = 'mso';
    $in['paste_text_linebreaktype']     = 'combined';
    $in['plugins']                      = 'tabfocus,paste,media,fullscreen,wordpress,wpeditimage,wpgallery,wplink,wpdialogs';
    $in['theme_advanced_buttons1']      = 'formatselect,forecolor,|,bold,italic,underline,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,|,wp_adv';
    $in['theme_advanced_buttons2']      = 'pastetext,pasteword,selectall,removeformat,|,charmap,|,outdent,indent,|,undo,redo';
    $in['theme_advanced_buttons3']      = '';
    $in['theme_advanced_buttons4']      = '';
    //$in['valid_children']               = '+div[p]';

    return $in;
}

今はbullist,numlistをリ​​ストしていますが、エディタ上では表示されません。しかし、strikethroughは表示されていなくても表示されます。

不足している他の2つだけがhorizontal linespecial characterです。それに加えて、それらは私がそれらを置いた順序で現れない、順序は幾分ランダムに思える。

このサイトではすべてが利用可能であれば、ボタンを設定しなくても問題ありませんが、pastetext,pasteword,selectallなどのプラグインボタンを挿入するために使用する必要があると思いましたか。

私はここで何をしていますか?

2
Brett

Theme_advanced_buttons1、theme_advanced_buttons2などは、TinyMCE 4では使用できなくなったTinyMCEの高度なテーマの一部であったと思います。

2行のコントロールは、次のように参照されます。

mce_buttons
mce_buttons_2

これは、 https://www.kevinleary.net/customizing-tinymce-wysiwyg- editor-wordpress/ /から得られた良い例です。

// TinyMCE: First line toolbar customizations
if( !function_exists('base_extended_editor_mce_buttons') ){
    function base_extended_editor_mce_buttons($buttons) {
        // The settings are returned in this array. Customize to suite your needs.
        return array(
            'formatselect', 'bold', 'italic', 'subscript', 'superscript', 'bullist', 'numlist', 'link', 'unlink', 'blockquote', 'outdent', 'indent', 'charmap', 'removeformat', 'spellchecker', 'fullscreen', 'wp_more', 'wp_help'
        );
    }
    add_filter("mce_buttons", "base_extended_editor_mce_buttons", 0);
}

// TinyMCE: Second line toolbar customizations
if( !function_exists('base_extended_editor_mce_buttons_2') ){
    function base_extended_editor_mce_buttons_2($buttons) {
        // The settings are returned in this array. Customize to suite your needs. An empty array is used here because I remove the second row of icons.
        return array('bold, italic, pastetext, paste, selectall');
    }
    add_filter("mce_buttons_2", "base_extended_editor_mce_buttons_2", 0);
}

N.B. selectallは動作するようですが、試してみるとアイコンが表示されません。おそらくこの問題と同じです - https://github.com/tinymce/tinymce /issues/634

また、 'pasteword'オプションはないようですが、 'paste'と 'pastetext'、そして有料プラグイン 'powerpaste'もあります。

https://www.tiny.cloud/docs/plugins/paste/

https://www.tiny.cloud/docs/plugins/powerpaste/

1
junkrig

元の配列を使用し続けることができ、追加のフィルターを使用する必要がないこの方法でも実行できることがわかりました。

theme_advanced_buttons*という名前の配列キーの代わりに、toolbar*という名前になりました。たとえば、

$in['toolbar1'] = 'formatselect, bold, italic, underline, bullist, numlist, blockquote, link, image, alignleft, aligncenter, alignright, alignjustify, wp_more, fullscreen';
$in['tollbar2'] = 'strikethrough, forecolor, outdent, indent, pastetext, removeformat, wp_help';
$in['toolbar3'] = '';
$in['toolbar4'] = '';

ただし、何らかの理由で、データにundoおよびredoボタンがなくても、ジャンキングの answer あなたがリストしたものを得るexactly

1
Brett