如果您是WordPress开发人员,那么在某些时候您可能会遇到自定义或扩展WordPress可视化编辑器的情况。 例如,您可能希望将一个按钮添加到可视化编辑器的工具栏中,以允许您的客户端轻松插入文本框或调用动作按钮,而无需编写任何HTML代码。 在本文中,我们将向您展示如何在WordPress中创建一个TinyMCE插件。
要求
本教程面向高级用户。 如果您是初学者级别的用户,只需要扩展可视化编辑器,那么请查看TinyMCE Advanced插件,或者查看使用WordPress可视化编辑器的技巧。
对于本教程,您将需要基本的编码技巧,访问WordPress安装,您可以在其中进行测试。
在现场网站上开发插件是一个不好的做法。 代码中的一个小错误可能会使您的网站无法访问。 但是,如果你必须在一个实况网站上做,那么至少要先备份WordPress。
创建您的第一个TinyMCE插件
我们将开始创建一个WordPress插件来注册我们的定制TinyMCE工具栏按钮。 点击后,此按钮将允许用户添加一个自定义CSS类的链接。
本文最后将提供源代码,但在此之前,我们将逐步创建插件。
首先,你需要在中创建一个目录 的wp-content /插件
你的WordPress安装文件夹。 命名这个文件夹 TinyMCE的定制链路级
。
从这里开始,我们将开始添加我们的插件代码。
插件标题
在刚刚创建的插件目录中创建一个新文件并命名该文件 TinyMCE的定制链接,class.php
。 将此代码添加到文件并保存。
/ ** *插件名称:TinyMCE自定义链接类 *插件URI:http://site.com *版本:1.0 *作者:网站 *作者URI:http://www.site.com *描述:一个简单的TinyMCE插件,在Visual Editor中添加一个自定义链接类 *许可证:GPL2 * /
这只是一个PHP注释,它告诉WordPress插件的名称,以及作者和描述。
在WordPress管理区域,通过进入Plugins> Installed Plugins,然后点击TinyMCE Custom Link Class插件旁边的激活来激活你的新插件:
设置我们的插件类
如果两个WordPress插件具有相同名称的功能,则会导致错误。 我们将通过将我们的函数包装在一个类中来避免这个问题。
类TinyMCE_Custom_Link_Class { / ** *构造函数。 当插件被初始化时调用。 * / 函数__construct(){ } } $ tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;
这创建了我们的PHP类,以及一个构造,当我们到达线时被调用 $ tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;
。
我们在这个类中添加的任何函数都不应该和其他WordPress插件冲突。
开始设置我们的TinyMCE插件
接下来,我们需要告诉TinyMCE,我们可能想将我们的自定义按钮添加到可视化编辑器的工具栏中。 要做到这一点,我们可以使用WordPress的行动 – 具体来说, 在里面
行动。
在你的插件里添加下面的代码 __构造()
功能:
if(is_admin()){ add_action('init',array($ this,'setup_tinymce_plugin')); }
这检查我们是否在WordPress管理界面。 如果我们是,那么它要求WordPress运行 setup_tinymce_plugin
当WordPress完成其初始加载例程时,我们班内的功能。
接下来,添加 setup_tinymce_plugin
功能:
/ ** *检查当前用户是否可以编辑帖子或页面,并使用可视化编辑器 *如果是这样,添加一些过滤器,所以我们可以注册我们的插件 * / 函数setup_tinymce_plugin(){ //检查登录的WordPress用户是否可以编辑帖子或页面 //如果不是,请不要注册我们的TinyMCE插件 if(!current_user_can('edit_posts')&&!current_user_can('edit_pages')){ 返回; } //检查登录的WordPress用户是否启用了Visual Editor //如果不是,请不要注册我们的TinyMCE插件 if(get_user_option('rich_editing')!=='true'){ 返回; } //设置一些过滤器 add_filter('mce_external_plugins',数组(&$ this,'add_tinymce_plugin')); add_filter('mce_buttons',数组(&$ this,'add_tinymce_toolbar_button')); }
这将检查当前登录的WordPress用户是否可以编辑帖子或页面。 如果他们不能,注册我们的TinyMCE插件没有意义,因为他们永远不会看到可视化编辑器。
然后,我们检查用户是否使用可视化编辑器,因为一些WordPress用户通过用户>您的个人资料关闭此功能。 同样,如果用户不使用可视化编辑器,我们返回(退出)函数,因为我们不需要做任何事情。
最后,我们添加两个WordPress过滤器 – mce_external_plugins
和 mce_buttons
,调用我们的函数,它将加载TinyMCE所需的Javascript文件,并添加一个按钮到TinyMCE工具栏。
注册Javascript文件和按钮到可视化编辑器
我们继续并添加 add_tinymce_plugin
功能:
/ ** *添加一个TinyMCE插件兼容JS文件到TinyMCE / Visual Editor实例 * * @param数组$ plugin_array已注册的TinyMCE插件数组 * @return数组已注册的TinyMCE插件的修改数组 * / 函数add_tinymce_plugin($ plugin_array){ $ plugin_array ['custom_link_class'] = plugin_dir_url(__FILE__)。 'TinyMCE的定制链接-class.js'; 返回$ plugin_array; }
这个函数告诉TinyMCE它需要加载存储在Javascript中的Javascript文件 $ plugin_array
阵列。 这些Javascript文件将告诉TinyMCE要做什么。
我们还需要添加一些代码 add_tinymce_toolbar_button
函数,告诉TinyMCE关于我们想要添加到工具栏的按钮:
/ ** *添加一个按钮到用户可以点击的TinyMCE / Visual Editor *插入一个自定义CSS类的链接。 * * @param array $ buttons注册TinyMCE按钮的数组 * @return数组已注册的TinyMCE按钮的修改数组 * / 函数add_tinymce_toolbar_button($ buttons){ array_push($ buttons,'|','custom_link_class'); 返回$按钮; }
这将两个项目推到TinyMCE按钮的数组上:分隔符(|)和我们按钮的编程名称( custom_link_class
)。
保存您的插件,然后编辑页面或张贴以查看可视化编辑器。 机会是,工具栏现在不显示:
别担心 – 如果我们使用我们的网页浏览器的检查控制台,我们会看到TinyMCE已经生成了一个404错误和通知,告诉我们它找不到我们的Javascript文件。
这很好 – 这意味着我们已经成功地注册了我们的TinyMCE自定义插件,现在需要创建Javascript文件来告诉TinyMCE该做什么。
创建Javascript插件
在你的文件里创建一个新文件 可湿性粉剂内容/插件/ TinyMCE的定制链路级
文件夹,并命名它 TinyMCE的定制链接,class.js
。 把这个代码添加到你的js文件中:
(function(){ tinymce.PluginManager.add('custom_link_class',function(editor,url){ }); })();
这就调用了TinyMCE插件管理器类,我们可以使用它来执行一些TinyMCE插件相关的操作。 具体来说,我们使用的是将我们的插件添加到TinyMCE 加
功能。
这接受两个项目; 插件的名称( custom_link_class
)和一个匿名函数。
如果您熟悉编码中的函数概念,匿名函数只是一个没有名字的函数。 例如, 函数foobar(){...}
是一个函数,我们可以调用我们的代码中的其他地方使用 foobar的()
。
使用匿名函数,我们不能在代码中的其他地方调用这个函数 – 它只是在被调用的地方 加()
函数被调用。
保存您的Javascript文件,然后编辑页面或帖子以查看可视化编辑器。 如果一切正常,你会看到工具栏:
现在,我们的按钮还没有被添加到该工具栏。 那是因为我们只告诉TinyMCE我们是一个自定义的插件。 我们现在需要告诉TinyMCE要做什么 – 也就是向工具栏添加一个按钮。
更新您的Javascript文件,用以下代码替换您现有的代码:
(function(){ tinymce.PluginManager.add('custom_link_class',function(editor,url){ //将按钮添加到可视化编辑器工具栏 editor.addButton('custom_link_class',{ 标题:“插入按钮链接”, cmd:'custom_link_class', }); }); })();
注意我们的匿名函数有两个参数。 首先是 编辑
实例 – 这是TinyMCE可视化编辑器。 以同样的方式,我们可以调用各种功能 插件管理
,我们也可以调用上的各种功能 编辑
。 在这种情况下,我们打电话给 Add按钮
函数,将一个按钮添加到工具栏。
保存你的Javascript文件,并返回到你的可视化编辑器。 一看,似乎没有任何改变。 但是,如果将鼠标光标悬停在最上面一行最右侧图标的右侧,则会看到一个工具提示:
我们已经成功地将一个按钮添加到工具栏,但它需要一个图像。 将以下参数添加到 Add按钮
功能,下面 标题:
线:
image:url +'/icon.png',
网址
是我们插件的URL。 如果我们想要在我们的插件文件夹中引用一个图像文件,这是很方便的,因为我们可以将图像文件名添加到URL。 在这种情况下,我们需要一个名为的图像 的icon.png
在我们的插件的文件夹中。 使用下面的图标:
重新加载我们的可视化编辑器,现在您将看到带有图标的按钮:
定义一个命令来运行
现在,如果你点击按钮,什么都不会发生。 让我们添加一个命令给TinyMCE,告诉它当我们的按钮被点击时该怎么做。
在我们的Javascript文件中,在下面添加下面的代码 editor.addButton
部分:
//单击按钮时添加命令 editor.addCommand('custom_link_class',function(){ 警报(“按钮点击!”); });
重新加载我们的可视化编辑器,点击按钮,将出现一个提示,确认我们只是点击按钮:
让我们用提示替换警报,询问用户在Visual Editor中选择的文本周围的链接:
//单击按钮时添加命令 editor.addCommand('custom_link_class',function(){ //检查我们选择了一些我们想链接的文字 var text = editor.selection.getContent({ 'format':'html' }); if(text.length === 0){ 提醒('请选择一些文字链接'); 返回; } //请求用户输入一个URL var result = prompt('输入链接'); if(!result){ //用户取消 - 退出 返回; } if(result.length === 0){ //用户没有输入网址 - 退出 返回; } //将选定的文本插入到编辑器中,并将其包装在锚标记中 editor.execCommand('mceReplaceContent',false,''+ text +''); });
这段代码执行一些操作。
首先,我们检查用户是否选择了一些在Visual Editor中链接的文本。 如果没有,他们会看到一个警告,告诉他们选择一些文本链接。
接下来,我们要求他们输入一个链接,再次检查他们是否做到了。 如果他们取消了,或者什么都没有进入,我们什么都不做。
最后,我们运行 将execCommand
在TinyMCE编辑器上运行,具体运行 mceReplaceContent
行动。 这将使用我们的HTML代码替换选定的文本,该HTML代码包含class =“button”的锚链接,使用用户选择的文本。
如果一切正常,你会看到你所选择的文本现在链接到可视化编辑器和文本视图,类设置为 按键
:
概要
我们已经成功地创建了一个WordPress插件,在WordPress中为TinyMCE可视化编辑器添加一个按钮。 本教程还介绍了可用于TinyMCE集成的TinyMCE API和WordPress过滤器的一些基础知识。
我们添加了代码,以便当用户点击我们的自定义按钮时,系统会提示他们在可视化编辑器中选择一些文本,然后链接到他们选择的URL。 最后,我们的插件用包含一个自定义CSS类的链接版本替换选定的文本 按键
。
我们希望本教程能够帮助您学习如何创建一个WordPress TinyMCE插件。 您也可以查看我们的指南,了解如何创建特定于站点的WordPress插件。