当前如何在视觉编辑器TinyMCE版本4中添加自定义按钮?但是我找不到用于在TinyMCE版本4中添加自定义按钮的主题的教程,文档和问答,自3.9-beta1版本起就包含在WordPress中。 />
#1 楼
以下小插件在WordPress TinyMCE版本4的第1行中创建了一个自定义按钮,该按钮在WP版本3.9-beta2中进行了测试。也可以将按钮添加到可视化编辑器的其他行,仅添加另一个钩子,如第2行:var_dump
。结果
插件,PHP端-
mce_buttons_2
<?php
/**
* Plugin Name: TinyMCE 4 @ WP Test
* Description:
* Plugin URI:
* Version: 0.0.1
* Author: Frank Bültge
* Author URI: http://bueltge.de
* License: GPLv2
* License URI: ./assets/license.txt
* Text Domain:
* Domain Path: /languages
* Network: false
*/
add_action( 'admin_head', 'fb_add_tinymce' );
function fb_add_tinymce() {
global $typenow;
// Only on Post Type: post and page
if( ! in_array( $typenow, array( 'post', 'page' ) ) )
return ;
add_filter( 'mce_external_plugins', 'fb_add_tinymce_plugin' );
// Add to line 1 form WP TinyMCE
add_filter( 'mce_buttons', 'fb_add_tinymce_button' );
}
// Inlcude the JS for TinyMCE
function fb_add_tinymce_plugin( $plugin_array ) {
$plugin_array['fb_test'] = plugins_url( '/plugin.js', __FILE__ );
// Print all plugin JS path
var_dump( $plugin_array );
return $plugin_array;
}
// Add the button key for address via JS
function fb_add_tinymce_button( $buttons ) {
array_push( $buttons, 'fb_test_button_key' );
// Print all buttons
var_dump( $buttons );
return $buttons;
}
脚本,JavaScript端-
tinymce4-test.php
( function() {
tinymce.PluginManager.add( 'fb_test', function( editor, url ) {
// Add a button that opens a window
editor.addButton( 'fb_test_button_key', {
text: 'FB Test Button',
icon: false,
onclick: function() {
// Open window
editor.windowManager.open( {
title: 'Example plugin',
body: [{
type: 'textbox',
name: 'title',
label: 'Title'
}],
onsubmit: function( e ) {
// Insert content when the window form is submitted
editor.insertContent( 'Title: ' + e.data.title );
}
} );
}
} );
} );
} )();
Gist
使用Gist bueltge / 9758082作为参考,或下载。 Gist还提供了有关TinyMCE中不同按钮的更多示例。
链接
TinyMCE API 4
3.x的迁移指南
WP Trac Ticket
TinyMCE图标字体的默认字体
通过Dashicon或Genericons的替代图标
TinyMCE默认插件
兼容插件-该插件包含一些兼容文件旧的3.x分支。这使您可以运行大多数旧的3.x插件,而无需进行任何修改。
#2 楼
并且,如果您希望有一个实际的图标按钮,则可以使用破折号或您自己的图标字体。创建CSS文件,并在管理端入队;
i.mce-i-pluginname:before {
content: "\f164";
display: inline-block;
-webkit-font-smoothing: antialiased;
text-align: center;
font: 400 20px/1 dashicons!important;
speak: none;
vertical-align: top;
}
基本上直接取自核心。
评论
是的,位于“链接”列表中的“我的链接”上方。
– Bueltge
2014年3月27日在9:02
希望我在花了半个小时试图通过CSS文件添加它之前找到了这个答案。这似乎是最好的方法。我在网上找到的所有教程都是多余的。
– aendrew
14年7月14日在9:24
#3 楼
添加按钮的简单方法1)将此代码添加到FUNCTIONS.PHP中,或插入插件中
//add_protect_shortcode_button
add_action('admin_init', 'add_cb_button');function add_cb_button() {
if (current_user_can('edit_posts') && get_user_option('rich_editing') == 'true') {
add_filter('mce_buttons_2', 'register_buttonfirst');
add_filter('mce_external_plugins', 'add_pluginfirst');
}
}
function register_buttonfirst($buttons) { array_push($buttons, "|", "shortcode_button1" ); return $buttons;}
function add_pluginfirst($plugin_array) {$plugin_array['MyPuginButtonTag'] = plugin_dir_url( __FILE__ ).'My_js_folder/1_button.php';return $plugin_array;}
add_filter( 'tiny_mce_version', 'my_refresh_mceeee1'); function my_refresh_mceeee1($ver) {$ver += 3;return $ver;}
2)创建1_button.php在目标文件夹中并插入此代码(请注意,更改“ wp-load”和“ ButtonImage.png” URL !!!)
<?php
header("Content-type: application/x-javascript");
require('../../../../wp-load.php');
?>
(function() {
// START my customs
var abcd =location.host;
tinymce.create('tinymce.plugins.shortcodebuton_plugin2', {
init : function(ed, this_folder_url)
{
// -------------------------
ed.addButton('shortcode_button1', {
title : 'Show Level1 count',
image : this_folder_url + '/ButtonImage.png',
onclick : function() {
ed.selection.setContent('[statistics_sp]');
//var vidId = prompt("YouTube Video", "");
//ed.execCommand('mceInsertContent', false, '[youtube id="'+vidId+'"]');
}
});
},
createControl : function(n, cm) { return null; },
});
tinymce.PluginManager.add('MyPuginButtonTag', tinymce.plugins.shortcodebuton_plugin2);
})();
评论
我认为这不是最好的方法。 wp-load.php的包含内容不稳定。离开此文件的速度不同。默认情况下,WordPress的安装可以移动主题和插件文件夹。
– Bueltge
2015年2月20日在16:29
评论
TinyMCE关于如何创建对话框的文档实际上并不是很有帮助。所以我继续写了一篇文章,列出了可用的不同小部件和容器布局:makina-corpus.com/blog/metier/2016/…
– Gagaro
16-3-30在9:31