我在WordPress社区问过这个问题,但没有得到答案,所以我想我也可以联系这个社区。 p>
我正在调整我的WordPress安装,并使用我编写的自定义插件向我的可视化编辑器添加自定义按钮。现在,我已经关注this tutorial并添加了一个&#34;代码&#34;按钮,但我也想添加一个&#34;引用&#34;包含<cite></cite>
标签中所选文本的按钮。我确信我可以复制该插件并进行微小的更改,但这看起来很笨拙且效率低下,而且我更愿意通过同一个插件添加两个按钮。
关于这个问题here有一个相关的问题,但是几年前,我使用的是WordPress 3.9.1,它使用了新版本的TinyMCE (视觉编辑)。因此,我不完全确定该答案中有多少是相关的,或者如何将其应用于TinyMCE 4. *。
这是我用来添加&#34;代码&#34;的PHP脚本。按钮:
<?php
add_action( 'init', 'code_button' );
function code_button() {
add_filter( "mce_external_plugins", "code_add_button" );
add_filter( 'mce_buttons', 'code_register_button' );
}
function code_add_button( $plugin_array ) {
$plugin_array['mycodebutton'] = $dir = plugins_url( 'shortcode.js', __FILE__ );
return $plugin_array;
}
function code_register_button( $buttons ) {
array_push( $buttons, 'codebutton' );
return $buttons;
相关的JS文件:
(function() {
tinymce.create('tinymce.plugins.code', {
init : function(ed, url) {
ed.addButton('codebutton', {
title : 'Code',
cmd : 'codebutton',
icon: 'icon dashicons-editor-code'
});
ed.addCommand('codebutton', function() {
var selected_text = ed.selection.getContent();
var return_text = '';
return_text = '<code>' + selected_text + '</code>';
ed.execCommand('mceInsertContent', 0, return_text);
});
},
// ... Hidden code
});
// Register plugin
tinymce.PluginManager.add( 'mycodebutton', tinymce.plugins.code );
})();
我需要对这些文件进行哪些更改才能添加其他自定义按钮?
谢谢!
答案 0 :(得分:2)
如果要添加另一个按钮,只需将其添加到您的functions.php
add_filter( 'mce_buttons', 'wolfie_register_mce_button' );
function wolfie_register_mce_button( $buttons ) {
array_push( $buttons, 'wolfie_mce_button', 'wolfie_letter_space_decrement', 'your-button-name' ); // Add to this array your another button
return $buttons;
}
但是,如果您要添加新插件,则可以使用以下代码:
function wolfie_add_mce_button() {
if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) {
return;
}
if ( 'true' == get_user_option( 'rich_editing' ) ) {
add_filter( 'mce_external_plugins', 'wolfie_add_tinymce_plugin' );
}
add_filter( 'mce_buttons', 'wolfie_register_mce_button' );
function wolfie_register_mce_button( $buttons ) {
array_push( $buttons, 'wolfie_mce_button', 'wolfie_letter_space_decrement', 'your-button-name' ); // Add to this array your another button
return $buttons;
}
function wolfie_add_tinymce_plugin( $plugin_array ) {
$plugin_array['wolfie_mce_button'] = $plugin_array['myplugin'] = get_template_directory_uri() . '/assets/js/admin.js'; // <--- here add directory to your js file
return $plugin_array;
}
}
add_action('admin_head', 'wolfie_add_mce_button');
然后在指定的目录目录中创建js文件并添加如下内容:
jQuery(document).ready(function($){
(function printToEditorMce() {
tinymce.PluginManager.add('wolfie_mce_button', function(editor, url) {
editor.addButton('wolfie_mce_button', {
text: 'Increment letter spacing',
icon: false,
onclick: function() {
var currentFontSize = new Number($(tinyMCE.activeEditor.selection.getNode())
.css('letter-spacing').replace('px',''));
currentFontSize = currentFontSize + 1;
tinymce.activeEditor.formatter.register('mycustomformat', {
inline : 'span',
styles : {'letter-spacing' : currentFontSize + 'px'}
});
tinymce.activeEditor.formatter.apply('mycustomformat');
}
});
editor.addButton('wolfie_letter_space_decrement', {
text: 'decrement letter spacing',
icon: false,
onclick: function() {
var currentFontSize = new Number($(tinyMCE.activeEditor.selection.getNode())
.css('letter-spacing').replace('px',''));
currentFontSize = currentFontSize - 1;
tinymce.activeEditor.formatter.register('mycustomformat', {
inline : 'span',
styles : {'letter-spacing' : currentFontSize + 'px'}
});
tinymce.activeEditor.formatter.apply('mycustomformat');
}
});
});
})();
});
答案 1 :(得分:1)
有一个应该可以帮助你的插件,它被称为Visual Editor Custom Buttons。
安装完成后,仪表板菜单上有一个名为Visual Editor Custom Buttons的选项,