问题:后台我写了一个“心理测试”插件,插件只是 个管理数据的一组操作,要将这些心理测试放在文章里去显示,这个插入要在编辑器里完成,想要的就是输入一个id,然后生成一个字符串[plugin id='100'],在发布文章的时候再添加钩子解析这个字符串。那么,这个编辑器功能怎么做呢?
首先在init钩子里添加一个添加按钮的方法,再用过滤器给编辑器加上对应的按钮,而这个按钮的功能就是JS去完输入输出的。这里引入一个JS控件来完成。
add_action('init', 'nwj_tinymce_addbuttons');
function nwj_tinymce_addbuttons() {
if(!current_user_can('edit_posts') && ! current_user_can('edit_pages')) {
return;
}
if(get_user_option('rich_editing') == 'true') {
add_filter('mce_external_plugins', 'nwj_tinymce_addplugin');
add_filter('mce_buttons', 'nwj_tinymce_registerbutton');
}
}
function nwj_tinymce_registerbutton($buttons) {
array_push($buttons, 'separator', 'nwj');
return $buttons;
}
function nwj_tinymce_addplugin($plugin_array) {
$plugin_array['nwj'] = plugins_url( 'wp-nwj/plugin.js');
return $plugin_array;
}
这个按钮具体的功能是遵循tinymce编辑器规范的,按照它的
(function(){
tinymce.PluginManager.add("nwj",function(b){
b.addCommand("WP-NWJ-Insert_Nwj",function(){
for(var a=jQuery.trim(prompt("输入心理测试Id"));isNaN(a);)
a=jQuery.trim(prompt("Error: Id必须为数字"+"\n\n"+"请再次输入心理测试Id"));
-1<=a&&null!=a&&""!=a&&b.insertContent('[nwj id="'+a+'"]');
});
b.addButton("nwj",{
text:!1,
tooltip:"插入心理测试 ",
icon:"nwj dashicons-before dashicons-heart",
onclick:function(){
tinyMCE.activeEditor.execCommand("WP-NWJ-Insert_Nwj")
}})
})
})();
功能效果为: