为什么当我尝试添加TinyMCE按钮时,我的可视POST编辑器会断开?

时间:2014-08-03 作者:SpencerDub

我正在尝试向TinyMCE编辑器添加一个按钮。我正在使用WordPress 3.9.1,所以我关注this tutorial 添加新的TinyMCE按钮。现在,我只是想让教程版本正常工作——完成后,我将编辑按钮的脚本,以实际执行我想要的操作。

我已将此添加到我的孩子主题中functions.php 文件:

// Hooks your functions into the correct filters
function my_add_mce_button() {
    // check user permissions
    if ( !current_user_can( \'edit_posts\' ) && !current_user_can( \'edit_pages\' ) ) {
        return;
    }
    // check if WYSIWYG is enabled
    if ( \'true\' == get_user_option( \'rich_editing\' ) ) {
        add_filter( \'mce_external_plugins\', \'my_add_tinymce_plugin\' );
        add_filter( \'mce_buttons\', \'my_register_mce_button\' );
    }
}
add_action(\'admin_head\', \'my_add_mce_button\');

// Declare script for new button
function my_add_tinymce_plugin( $plugin_array ) {
    $plugin_array[\'my_mce_button\'] = get_template_directory_uri() .\'/js/mce-button.js\';
    return $plugin_array;
}

// Register new button in the editor
function my_register_mce_button( $buttons ) {
    array_push( $buttons, \'my_mce_button\' );
    return $buttons;
}
我还创建了一个包含以下内容的脚本,并将其保存为子主题文件夹的/js目录中的“mce-button.js”。

(function() {
    tinymce.PluginManager.add(\'my_mce_button\', function( editor, url ) {
        editor.addButton(\'my_mce_button\', {
            text: \'New Button\',
            icon: false,
            onclick: function() {
                editor.insertContent(\'WPExplorer.com is awesome!\');
            }
        });
    });
})();
然而,当我保存所有这些并加载帖子编辑器(在“视觉”选项卡中)时,没有任何按钮加载,并且我无法在编辑器中输入文本。事实上,如果我转到“文本”选项卡并输入文本,然后切换回“视觉”选项卡,则不会显示我输入的文本。

Broken WordPress editor

有人能帮我弄清楚为什么我的TinyMCE编辑器坏了,以及如何在不坏的情况下正确添加按钮?

非常感谢。

1 个回复
SO网友:SpencerDub

这是我的发现。它没有完全解释编辑器为什么会中断,但它确实解释了如何在不中断编辑器的情况下正确添加按钮。

我试图添加到的PHP代码functions.php 实际上需要作为插件添加。组合方向来自this StackExchange postthis tutorial, 我创建了一个WordPress插件,其中包含第二个链接中给出的PHP。我还按照教程的说明创建了shortcode.js 文件,我将其上载到自定义插件的文件夹。我通过我的仪表板激活了插件,它添加了一个工作按钮!

当我遵循directions I originally found 并将PHP函数添加为插件,而不是编辑functions.php, 它也很有效。

看起来像是在使用插件,而不是functions.php, 是为了让它工作。

结束