您的位置:首页 > Web前端 > JavaScript

WordPress文本编辑器自定义功能

2015-06-14 17:39 567 查看
问题:后台我写了一个“心理测试”插件,插件只是 个管理数据的一组操作,要将这些心理测试放在文章里去显示,这个插入要在编辑器里完成,想要的就是输入一个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")
}})
})
})();


功能效果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息