自定义WordPress TinyMce编辑器及其按钮

时间:2018-07-26 作者:Brett

我正试图在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 即使它没有列出。

另外两个失踪的是horizontal linespecial character; 最重要的是,它们并没有按照我的顺序出现,顺序似乎有些随机。

我很高兴不用设置按钮,就像这个网站一样,如果一切都可用就可以了,但我想我需要用它来插入插件按钮,比如pastetext,pasteword,selectall?

我做错了什么?

2 个回复
最合适的回答,由SO网友:junkrig 整理而成

我认为theme\\u advanced\\u buttons1、theme\\u advanced\\u buttons2等是TinyMCE advanced主题的一部分,TinyMCE 4中不再提供这些主题。WordPress 4.9.7使用的是TinyMCE版本4.7.11。

这两行控件现在被称为:

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);
}
注意: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/

SO网友:Brett

我刚刚发现,您也可以这样做,您可以继续使用原始阵列,而不必使用其他过滤器:

而不是命名数组键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 “我的数据”中的按钮,它们无论如何都会显示,使用junking的answer 你得到的正是你所列出的。

结束

相关推荐

如何在TinyMCE中使用自定义文本样式编辑实际的段落下拉菜单

我想给后端用户只有4种文本样式可供选择。标题、副标题、段落和我们称之为.statement.搜索诸如“TinyMCE中的自定义样式”之类的术语总是以wordpress本身的这篇文章结尾。https://codex.wordpress.org/TinyMCE_Custom_Styles不幸的是,我不想访问其他下拉列表。我需要去掉当前下拉列表中的内容,并用我自己的样式填充它。在第一步中,我实际上并不关心它们在下拉菜单和可视化编辑器中的外观。这里的关键是去掉不必要的造型选项;选项设计(&P);前端将不支持。(尽