小工具      在线工具  汉语词典  css  js  c++  java

tinymce 插件_如何创建WordPress TinyMCE插件

可视化,python,java,php,js,ViewUI 额外说明

收录于:101天前

TinyMCE插件

如果您是 WordPress 开发人员,那么在某些时候您可能会遇到自定义或扩展 WordPress 可视化编辑器的情况。例如,您可能希望向可视化编辑器的工具栏添加一个按钮,以允许您的客户端轻松插入文本框或号召性用语按钮,而无需编写任何 HTML 代码。在本文中,我们将向您展示如何在 WordPress 中创建 TinyMCE 插件。

如果您是 WordPress 开发人员,那么有时您可能会面临自定义或扩展 WordPress 可视化编辑器的问题。例如,您可能希望向可视化编辑器的工具栏添加一个按钮,以允许您的客户轻松插入文本框或号召性用语按钮,而无需编写任何 HTML 代码。在本文中,我们将向您展示如何在 WordPress 中创建 TinyMCE 插件。

Tiny MCE toolbar in WordPress Visual Editor
要求 Requirements

This tutorial is intended for advanced users. If you are a beginner level user who just wants to extend visual editor, then please check out TinyMCE 高级版 plugin or take a look at these tips on using WordPress 可视化编辑器.

本教程适用于高级用户。 如果您是只想扩展可视化编辑器的初学者级用户,那么请查看TinyMCE 高级版插件或查看有关使用WordPress 可视化编辑器这些提示。

For this tutorial, you will need basic coding skills, access to a WordPress 安装 where you can test it out.

对于本教程,您将需要基本的编码技能,并可以在WordPress安装中进行测试。

It is a bad practice to develop plugins on a live website. A minor mistake in the code can make your site inaccessible. But if you must do it on a live site, then at least 备份WordPress first.

在实时网站上开发插件是一种不良做法。 代码中的一个小错误会使您的网站无法访问。 但是,如果必须在实时站点上进行操作,则至少应首先备份WordPress

创建您的第一个TinyMCE插件 Creating Your First TinyMCE Plugin

我们将首先创建一个 WordPress 插件来注册我们的自定义 TinyMCE 工具栏按钮。单击时,此按钮将允许用户添加带有自定义 CSS 类的链接。

我们将首先创建一个 WordPress 插件来注册我们的自定义 TinyMCE 工具栏按钮。单击后,此按钮将允许用户添加带有自定义 CSS 类的链接。

本文末尾将完整提供源代码,但在此之前,让我们逐步创建插件。

完整的源代码将在本文末尾提供,但在此之前,让我们逐步创建插件。

First, you need to create a directory in wp-content/plugins folder of your WordPress install. Name this folder tinymce-custom-link-class.

首先,您需要在WordPress安装的wp-content/plugins文件夹中创建一个目录。 将此文件夹命名为tinymce-custom-link-class

从这里开始,我们将开始添加插件代码。

从这里我们将开始添加插件代码。

插件头 The Plugin Header

Create a new file in the plugin directory we just created and name this file tinymce-custom-link-class.php. Add this code to the file and save it.

在我们刚刚创建的插件目录中创建一个新文件,并将其命名为tinymce-custom-link-class.php 。 将此代码添加到文件并保存。


/**
 * Plugin Name: TinyMCE Custom Link Class
 * Plugin URI: http://wpbeginner.com
 * Version: 1.0
 * Author: WPBeginner
 * Author URI: https://www.wpbeginner.com
 * Description: A simple TinyMCE Plugin to add a custom link class in the Visual Editor
 * License: GPL2
 */

这只是一个 PHP 注释,它告诉 WordPress 插件的名称,以及作者和描述。

这只是一个 PHP 注释,告诉 WordPress 插件的名称及其作者和描述。

In the WordPress 管理区, activate your new plugin by going to Plugins > Installed Plugins, and then clicking Activate beside the TinyMCE Custom Link Class plugin:

在WordPress的在admin管理区域 ,转到插件>已安装的插件,然后单击TinyMCE自定义链接类插件旁边的激活,以激活新插件:

Installed plugin
设置我们的插件课程 Setting Up Our Plugin Class

如果两个 WordPress 插件具有相同名称的函数,则会导致错误。我们将通过将函数包装在类中来避免这个问题。

如果两个 WordPress 插件具有相同名称的功能,则会导致错误。通过将函数包装在类中可以避免此问题。


class TinyMCE_Custom_Link_Class {
	
	/**
	* Constructor. Called when the plugin is initialised.
	*/
	function __construct() {
		
	}

}

$tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;

This creates our PHP class, along with a construct, which is called when we reach the line $tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;.

这将创建我们PHP类以及一个构造,当我们到达行$tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;时,将调用该$tinymce_custom_link_class = new TinyMCE_Custom_Link_Class;

我们在此类中添加的任何功能都不应与其他 WordPress 插件冲突。

我们在此类中添加的任何功能都不应与其他 WordPress 插件冲突。

开始设置我们的TinyMCE插件 Start Setting Up Our TinyMCE Plugin

Next, we need to tell TinyMCE that we might want to add our custom button to the 可视化编辑器‘s toolbar. To do this, we can use WordPress’ 行动 – specifically, the init action.

接下来,我们需要告诉TinyMCE,我们可能想将自定义按钮添加到可视化编辑器的工具栏中。 为此,我们可以使用WordPress的操作 -特别是init操作。

Add the following code inside your plugin’s __construct() function:

在插件的__construct()函数内添加以下代码:


if ( is_admin() ) {
	add_action( 'init', array(  $this, 'setup_tinymce_plugin' ) );
}

This checks if we are in the WordPress Administration interface. If we are, then it asks WordPress to run the setup_tinymce_plugin function inside our class when WordPress has finished its initial loading routine.

这将检查我们是否在WordPress管理界面中。 如果是这样,那么当WordPress完成其初始加载例程后,它会要求WordPress在我们的类中运行setup_tinymce_plugin函数。

Next, add the setup_tinymce_plugin function:

接下来,添加setup_tinymce_plugin函数:


/**
* Check if the current user can edit Posts or Pages, and is using the Visual Editor
* If so, add some filters so we can register our plugin
*/
function setup_tinymce_plugin() {

// Check if the logged in WordPress User can edit Posts or Pages
// If not, don't register our TinyMCE plugin
	
if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) {
	        return;
}

// Check if the logged in WordPress User has the Visual Editor enabled
// If not, don't register our TinyMCE plugin
if ( get_user_option( 'rich_editing' ) !== 'true' ) {
return;
}

// Setup some filters
add_filter( 'mce_external_plugins', array( &$this, 'add_tinymce_plugin' ) );
add_filter( 'mce_buttons', array( &$this, 'add_tinymce_toolbar_button' ) );
		
	}

This checks if the current logged in WordPress user can edit 帖子或页面. If they can’t, there’s no point in registering our TinyMCE Plugin for that User, as they’ll never see the Visual Editor.

这将检查当前登录的WordPress用户是否可以编辑帖子或页面 。 如果他们不能这样做,则没有必要为该用户注册我们的TinyMCE插件,因为他们将永远不会看到Visual Editor。

然后,我们检查用户是否正在使用可视化编辑器,因为一些 WordPress 用户通过“用户”>“您的个人资料”关闭了此功能。同样,如果用户没有使用可视化编辑器,我们将返回(退出)该函数,因为我们不需要执行任何其他操作。

然后,我们检查用户是否正在使用可视化编辑器,因为一些 WordPress 用户通过“用户”>“您的个人资料”将其关闭。同样,如果用户没有使用可视化编辑器,我们将返回(退出)该函数,因为我们不需要执行任何其他操作。

Finally, we add two WordPress Filters – mce_external_plugins and mce_buttons, to call our functions which will load the required Javascript file for TinyMCE, and add a button to the TinyMCE toolbar.

最后,我们添加两个WordPress过滤器– mce_external_pluginsmce_buttons ,以调用我们的函数,这些函数将加载TinyMCE所需的Javascript文件,并在TinyMCE工具栏上添加一个按钮。

将Javascript文件和按钮注册到可视化编辑器 Registering the Javascript File and Button to the Visual Editor

Let’s go ahead and add the add_tinymce_plugin function:

让我们继续添加add_tinymce_plugin函数:


/**
* Adds a TinyMCE plugin compatible JS file to the TinyMCE / Visual Editor instance
*
* @param array $plugin_array Array of registered TinyMCE Plugins
* @return array Modified array of registered TinyMCE Plugins
*/
function add_tinymce_plugin( $plugin_array ) {

$plugin_array['custom_link_class'] = plugin_dir_url( __FILE__ ) . 'tinymce-custom-link-class.js';
return $plugin_array;

}
    

This function tells TinyMCE that it needs to load the Javascript files stored in the $plugin_array array. These Javascript files will tell TinyMCE what to do.

该函数告诉TinyMCE,它需要加载存储在$plugin_array数组中的Javascript文件。 这些Javascript文件将告诉TinyMCE该怎么做。

We also need to add some code to the add_tinymce_toolbar_button function, to tell TinyMCE about the button we’d like to add to the toolbar:

我们还需要向add_tinymce_toolbar_button函数添加一些代码,以向TinyMCE告知我们要添加至工具栏的按钮:



/**
* Adds a button to the TinyMCE / Visual Editor which the user can click
* to insert a link with a custom CSS class.
*
* @param array $buttons Array of registered TinyMCE Buttons
* @return array Modified array of registered TinyMCE Buttons
*/
function add_tinymce_toolbar_button( $buttons ) {

array_push( $buttons, '|', 'custom_link_class' );
return $buttons;
}


This pushes two items onto the array of TinyMCE buttons: a separator (|), and our button’s programmatic name (custom_link_class).

这会将两项推送到TinyMCE按钮的数组上:分隔符(|)和按钮的程序名称( custom_link_class )。

保存您的插件,然后编辑页面或帖子以查看可视化编辑器。有可能,工具栏现在没有显示:

保存您的插件,然后编辑页面或帖子以查看可视化编辑器。当前可能未显示工具栏:

wordpress-tinymce-plugin-missing-toolbar

别担心 - 如果我们使用网络浏览器的检查器控制台,我们会看到 TinyMCE 生成了 404 错误和通知,告诉我们它找不到我们的 Javascript 文件。

别担心 - 如果我们使用 Web 浏览器的 Inspector 控制台,我们将看到 TinyMCE 生成 404 错误和通知,告诉我们找不到 Javascript 文件。

wordpress-tinymce-plugin-js-404

很好 – 这意味着我们已经成功注册了 TinyMCE 自定义插件,现在需要创建 Javascript 文件来告诉 TinyMCE 要做什么。

太棒了——这意味着我们已经成功注册了 TinyMCE 自定义插件,现在需要创建 Javascript 文件来告诉 TinyMCE 要做什么。

创建Javascript插件 Creating the Javascript Plugin

Create a new file in your wp-content/plugins/tinymce-custom-link-class folder, and name it tinymce-custom-link-class.js. Add this code in your js file:

wp-content/plugins/tinymce-custom-link-class文件夹中创建一个新文件,并将其命名为tinymce-custom-link-class.js 。 将此代码添加到您的js文件中:


(function() {
	tinymce.PluginManager.add( 'custom_link_class', function( editor, url ) {
		
	});
})();

This calls the TinyMCE Plugin Manager class, which we can use to perform a number of TinyMCE plugin related actions. Specifically, we’re adding our plugin to TinyMCE using the add function.

这将调用TinyMCE插件管理器类,我们可以使用该类执行许多与TinyMCE插件相关的操作。 具体来说,我们正在使用add函数将插件添加到TinyMCE中。

This accepts two items; the name of the plugin (custom_link_class) and an anonymous function.

这接受两个项目; 插件的名称( custom_link_class )和一个匿名函数。

If you’re familiar with the concept of functions in coding, an anonymous function is simply a function with no name. For example, function foobar() { ... } is a function that we could call somewhere else in our code by using foobar().

如果您熟悉编码中的函数概念,那么匿名函数就是没有名称的函数。 例如, function foobar() { ... }是一个函数,我们可以使用foobar()在代码中的其他地方调用该函数。

With an anonymous function, we can’t call that function somewhere else in our code – it’s only being called at the point the add() function is invoked.

使用匿名函数,我们无法在代码中的其他位置调用该函数–仅在调用add()函数时调用它。

保存 Javascript 文件,然后编辑页面或帖子以查看可视化编辑器。如果一切正常,您将看到工具栏:

保存 Javascript 文件并编辑“页面”或“帖子”以查看可视化编辑器。如果一切正常,您将看到工具栏:

wordpress-tinymce-plugin-visual-editor-toolbar

目前,我们的按钮尚未添加到该工具栏中。那是因为我们只告诉 TinyMCE 我们是一个自定义插件。我们现在需要告诉 TinyMCE 做什么 – 即向工具栏添加一个按钮。

目前,我们的按钮还没有添加到工具栏中。那是因为我们只告诉 TinyMCE 我们是一个自定义插件。现在,我们需要告诉 TinyMCE 做什么——也就是说,向工具栏添加一个按钮。

更新您的 Javascript 文件,将现有代码替换为以下内容:

更新您的 Javascript 文件,将现有代码替换为以下内容:


(function() {
	tinymce.PluginManager.add( 'custom_link_class', function( editor, url ) {
		// Add Button to Visual Editor Toolbar
		editor.addButton('custom_link_class', {
			title: 'Insert Button Link',
			cmd: 'custom_link_class',
		});	
	});
})();

Notice our anonymous function has two arguments. The first is the editor instance – this is the TinyMCE Visual Editor. In the same way we can call various functions on the PluginManager, we can also call various functions on the editor. In this case, we’re calling the addButton function, to add a button to the toolbar.

注意我们的匿名函数有两个参数。 第一个是editor实例–这是TinyMCE可视编辑器。 以同样的方式,我们可以在PluginManager上调用各种函数,也可以在editor上调用各种函数。 在这种情况下,我们将调用addButton函数,以将按钮添加到工具栏。

保存 Javascript 文件,然后返回可视化编辑器。乍一看,似乎没有任何变化。但是,如果您将鼠标光标悬停在顶行最右侧图标的右侧,您应该会看到出现一个工具提示:

保存 Javascript 文件并返回到可视化编辑器。乍一看,似乎没有任何改变。但是,如果将鼠标光标悬停在第一行最右侧图标的右侧,您应该会看到出现一个工具提示:

wordpress-tinymce-plugin-button-noicon

We’ve successfully added a button to the toolbar, but it needs an image. Add the following parameter to the addButton function, below the title: line:

我们已经成功向工具栏添加了一个按钮,但是它需要一个图像。 在title:下面的行中,将以下参数添加到addButton函数中:

image: url + '/icon.png',

url is the URL to our plugin. This is handy if we want to reference an image file within our plugin folder, as we can append the image file name to the URL. In this case, we’ll need an image called icon.png in our plugin’s folder. Use the below icon:

icon

url是我们插件的URL。 如果我们要在插件文件夹中引用图像文件,这很方便,因为我们可以将图像文件名附加到URL。 在这种情况下,我们在插件的文件夹中需要一个名为icon.png的图像。 使用以下图标:

重新加载我们的可视化编辑器,您现在将看到带有图标的按钮:

wordpress-tinymce-plugin-button-icon

重新加载我们的可视化编辑器,现在您将看到带有图标的按钮:

定义要运行的命令 Defining a Command to Run

现在,如果您单击该按钮,则不会发生任何事情。让我们向 TinyMCE 添加一个命令,告诉它当我们的按钮被单击时要做什么。

现在,如果您单击该按钮,则不会发生任何事情。让我们向 TinyMCE 添加一个命令,告诉它单击按钮时要执行的操作。

In our Javascript file, add the following code below the end of the editor.addButton section:

在我们的Javascript文件中,将以下代码添加到editor.addButton部分的末尾:


// Add Command when Button Clicked
editor.addCommand('custom_link_class', function() {
	alert('Button clicked!');
});

重新加载我们的可视化编辑器,单击按钮,将出现一条警报,确认我们刚刚单击了按钮:

重新加载我们的可视化编辑器,单击按钮,将出现一条警告,确认我们刚刚单击了按钮:

wordpress-tinymce-plugin-alert-button-clicked

让我们用提示替换警报,询问用户他们想要在可视化编辑器中包围所选文本的链接:

让我们将警报替换为提示,要求用户提供链接以在可视化编辑器中换行所选文本:


// Add Command when Button Clicked
editor.addCommand('custom_link_class', function() {
	// Check we have selected some text that we want to link
	var text = editor.selection.getContent({
		'format': 'html'
	});
	if ( text.length === 0 ) {
		alert( 'Please select some text to link.' );
		return;
	}

	// Ask the user to enter a URL
	var result = prompt('Enter the link');
	if ( !result ) {
		// User cancelled - exit
		return;
	}
	if (result.length === 0) {
		// User didn't enter a URL - exit
		return;
	}

	// Insert selected text back into editor, wrapping it in an anchor tag
	editor.execCommand('mceReplaceContent', false, '<a class="button" href="' + result + '">' + text + '</a>');
});

该代码块执行一些操作。

该代码块执行一些操作。

首先,我们检查用户是否在可视化编辑器中选择了要链接的某些文本。如果没有,他们会看到一条警告,告诉他们选择一些文本进行链接。

首先,我们检查用户是否在可视化编辑器中选择了要链接的文本。如果没有,他们会看到一条警告,告诉他们选择一些要链接的文本。

wordpress-tinymce-plugin-alert-select-text

接下来,我们要求他们输入一个链接,再次检查他们是否输入了。如果他们取消,或者没有输入任何内容,我们不会做任何其他事情。

接下来,我们要求他们输入链接,并仔细检查它是否存在。如果他们取消,或者什么都不输入,我们什么也不做。

wordpress-tinymce-plugin-prompt-url

Finally, we run the execCommand function on the TinyMCE editor, specifically running the mceReplaceContent action. This replaces the selected text with our HTML code, which comprises of an anchor link with class=”button”, using the text the user selected.

最后,我们在TinyMCE编辑器上运行execCommand函数,特别是运行mceReplaceContent操作。 这将使用我们选择的文本,用我们HTML代码替换选择的文本,该HTML代码包含一个带有class =“ button”的锚链接。

If everything worked, you’ll see your selected text is now linked in the Visual Editor and Text views, with the class set to button:

如果一切正常,您将看到在Visual Editor和Text视图中链接了选定的文本,并将类设置为button

wordpress-tinymce-plugin-link-visual

wordpress-tinymce-plugin-link-html
摘要 Summary

我们已经成功创建了一个 WordPress 插件,它向 WordPress 中的 TinyMCE 可视化编辑器添加了一个按钮。本教程还介绍了可用于 TinyMCE 集成的 TinyMCE API 和 WordPress 过滤器的一些基础知识。

我们已经成功创建了一个 WordPress 插件,该插件向 WordPress 的 TinyMCE 可视化编辑器添加了一个按钮。本教程还介绍了可用于 TinyMCE 集成的 TinyMCE API 和 WordPress 过滤器的一些基础知识。

We added code so that when a user clicks our custom button, they’re prompted to select some text in the Visual Editor, which they can then link to a URL of their choice. Finally, our plugin then replaces the selected text with a linked version that contains a custom CSS class called button.

我们添加了代码,以便当用户单击我们的自定义按钮时,系统会提示他们在视觉编辑器中选择一些文本,然后他们可以链接到他们选择的URL。 最后,我们的插件然后用包含一个名为button的自定义CSS类的链接版本替换所选文本。

We hope this tutorial helped you learn how to create a WordPress TinyMCE plugin. You may also want to check out our guide on 如何创建特定于站点的 WordPress 插件.

我们希望本教程可以帮助您学习如何创建WordPress TinyMCE插件。 您可能还需要查看有关有关如何创建特定于站点的 WordPress 插件的指南

If you liked this article, then please subscribe to our YouTube 频道 for WordPress video tutorials. You can also find us on 推特 and Facebook.

如果您喜欢这篇文章,请订阅我们的YouTube 频道 WordPress视频教程。 您也可以在推特Facebook上找到我们。

翻译自: https://www.wpbeginner.com/wp-tutorials/how-to-create-a-wordpress-tinymce-plugin/

TinyMCE插件

. . .

相关推荐

额外说明

MybatisPlus - 自动代码生成

文章目录 简介 注意事项 依赖引入 代码生成工具 注释 1、自动填充 2、乐观锁和分页 3、逻辑删除 代码git地址 参考资料 简介 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成

额外说明

流程状态工具推荐

    astah  

额外说明

Maven项目集成Lombok-Log4j日志

文章目录 一.引入依赖 二.配置资源文件 三.结果 springboot项目已经为日志系统做了很好的集成.那普通的maven项目还需一定配置 一.引入依赖 <dependency> <groupId>org.pro

额外说明

fastmock的基本使用

fastmock的使用 1.创建项目 登录成功后进入到“我的项目”页面,这个时候项目列表应该是空的。点击页面中间的“创建项目”或者右上角的“+”可以开始创建项目。 在这里插入图片描述 字段说明: 项目名称:用于标识项目 项目基础路径:重要,基础路径用于为

额外说明

【Unity编辑器扩展】| GameView面板扩展

前言 【Unity编辑器扩展】| GameView面板扩展 未运行时在Game视图进行绘制 总结 前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。 后面就来针对Uniity编辑器扩

额外说明

【浩鲸科技】济南Java后端面经

本文目录 写在前面 试题总览 题目解析 1.说一下SpringBoot中常用的注解 2.Redis中的基本数据类型 3.TCP的网络协议 4.java中常见的锁 5.Hashmap的底层数据结构、底层源码、扩容机制+源码 6.java面向对象的特点 写在

额外说明

APP架构设计

文章目录 注解处理器 数据存储--MMKV使用及原理 数据存储--room使用 RxAndroid的使用方式 自定义类加载器加载加密类文件 Android动态化框架App Bundles MVC、MVP、MVVM 混合开发及Android WebView

额外说明

Python从入门到入土-基础语法

文章目录 看不见的开始和结束 函数 类 顺序语句 循环语句 数据类型 内置类 常用内置方法 看不见的开始和结束 作用域是编程语言里的一个重要的概念,特别是块作用域,编程语言一般会使用明确的符号标记一个作用域的开始和结束。 例如 C、C++、Java、C#

额外说明

Windows系统丢失rtutils.dll文件导致程序异常问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个rtutils.dll文件(

额外说明

wordpress图像大小_如何防止WordPress生成图像大小

wordpress图像大小 By default, WordPress generates three sizes of each image that you upload. Themes and plugins can generate 附加图像尺寸

ads via 小工具