WordPress文本编辑器自定义功能

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

功能效果为:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值