插件介绍
这一章讲了什么?
- 理解什么是插件
- 使用可用的WordPress api
- 寻找流行插件的例子
- 分离插件和主题功能
- 管理和安装插件
- 了解WordPress插件的类型
WordPress是当今最流行的开源内容管理系统。WordPress如此受欢迎的主要原因之一是您可以通过插件轻松地定制和扩展WordPress。WordPress有一个很棒的框架,它为插件开发者提供了扩展WordPress所需的工具。
了解插件的工作原理,以及WordPress中可用的工具,是开发专业WordPress插件的关键知识。
什么是插件?
一个插件是一个基于PHP的脚本,扩展或改变WordPress的核心功能。很简单,插件是安装在WordPress中的文件,用于向WordPress添加一个或一组功能。插件的复杂程度可以从简单的社交网络插件到极其复杂的电子商务包。在WordPress中,插件的功能是没有限制的;正因为如此,可供下载的插件并不短缺。
插件如何与WordPress交互
WordPress为你的插件提供了许多不同的api。每个API或应用程序编程接口都以不同的方式帮助与WordPress交互。下面是WordPress中主要可用的api及其功能:
- 插件:提供了一组钩子,允许插件访问WordPress的特定部分。WordPress包含两种不同类型的钩子:动作和过滤器。Action钩子允许你在执行过程中的特定时刻触发自定义插件代码。例如,您可以在用户在WordPress中注册用户帐户后触发一个自定义函数来运行。Filter钩子在将文本添加到数据库之前或从数据库检索文本之后修改文本。
- 部件:允许您在插件中创建和管理小部件。小部件出现在Appearance➪Widgets屏幕下,可以将它们添加到主题中任何已注册的侧栏中。该API允许在侧边栏中使用同一个小部件的多个实例。
- 商家:为插件添加短代码支持。shortcode是一个简单的钩子,允许您通过向帖子或页面添加诸如[shortcode]之类的内容来调用PHP函数。
- HTTP:从你的插件发送HTTP请求。此API从外部URL检索内容或将内容提交给URL。目前,您有五种不同的方式来发送HTTP请求。这个API标准化了这个过程,并在执行之前测试每个方法。根据您的服务器配置,API将使用适当的方法并发出请求。
- REST API:允许开发人员通过发送和接收JavaScript对象符号(JSON)对象与您的WordPress网站进行远程交互。您可以在WordPress中创建、读取、更新和删除(CRUD)内容。REST API在第12章“REST API”中有详细介绍。
- 设置:为您的插件插入设置或设置部分。使用Settings API的主要优点是安全性。所有的设置数据都被清除,所以在保存插件设置时,你不需要担心跨站请求伪造(CSRF)和跨站脚本(XSS)攻击。
- 选项:存储和检索插件中的选项。这个API具有创建新选项、更新现有选项、删除选项和检索已经定义的任何选项的功能。
- 仪表板小部件:创建仪表板小部件。小部件自动出现在WordPress仪表板上,包含所有标准定制功能,包括最小化、拖放和屏幕隐藏选项。
- 重写:在插件中创建自定义重写规则。此API允许您添加静态端点(
/ /自定义检测页面
),结构标签(% postname %
),以及传送连结(/ feed / json /
). - 瞬变:在插件中创建临时选项(缓存数据)。这个API类似于Options API,但是所有选项都保存有一个过期时间。
- 数据库:访问WordPress数据库。这包括创建、更新、删除和检索数据库记录,以便在插件中使用。
- 主题定制(定制)API:添加自定义网站和主题选项到WordPress自定义器。主题自定义显示在实时预览之前发布到现场网站。
在WordPress核心软件中还有其他一些鲜为人知的api。要查看完整列表,请访问核心开发人员手册:
WordPress也有可插入的功能。这些函数使你能够覆盖插件中特定的核心函数。例如,wp_mail ()
函数是可插入的函数。您可以很容易地在插件中定义此函数,并使用简单邮件传输协议(SMTP)而不是默认方法发送电子邮件。类中定义了所有可插入函数/ wp量包括/ pluggable.php
WordPress核心文件。
作为一个例子,让我们看看wp_mail ()
可插入函数,以这行代码开始:
如果(!Function_exists ('wp_mail')):
您可以看到,代码首先检查a是否wp_mail ()
函数已存在function_exists ()
PHP函数。如果您创建了自己的定制wp_mail ()
函数,表示将被使用;如果没有,WordPress核心版wp_mail ()
将被使用。
警告
可插入函数不再被添加到WordPress核心。较新的函数利用钩子重写它们的功能。
你可以在特定的插件任务中使用一些预定义的函数,比如当一个插件被激活或停用时,甚至当一个插件被卸载时。第二章“插件框架”详细介绍了这些函数。
什么时候加载插件?
当一个WordPress支持的网页被调用时,插件会在这个过程的早期被加载。图1 - 1显示了在WordPress中加载页面时标准加载过程的高级图表。
图1还是1:在WordPress中加载页面
加载管理页面时,流程略有变化。区别很小,主要是关于什么主题被加载:管理主题和你的网站主题。
可用的插件
在研究可用的插件时,你需要知道在哪里可以找到WordPress插件。你可以从互联网上的许多地方下载插件,但这并不总是一个好主意。
警告
与任何软件一样,从不受信任的来源下载插件可能会导致恶意软件注入和插件文件受损。最好只从可信的网站和官方来源(如官方插件目录)下载插件。
官方插件目录
当你开始研究可用的WordPress插件时,第一个地方是官方插件目录WordPress.org
.插件目录位于https://wordpress.org/plugins
.超过55,000个插件和数百万的插件下载,很容易看到插件在每个WordPress网站中扮演的重要角色。插件目录中提供的所有插件都是100% GPL的,可以免费用于个人或商业用途。
常用插件示例
看看一些比较流行的WordPress插件,了解一下它们的多样性:
- Yoast SEO:WordPress的高级搜索引擎优化功能。功能包括所有内容的自定义元数据、规范url、自定义帖子类型支持、XML站点地图等等!
- WPForms:一个强大的拖放表单生成器。创建简单的联系表单和功能强大的订阅支付表单,所有这些都无需编写一行代码。
- BuddyPress:一套组件,用于为您的网站带来常见的社交网络功能。在线社区的功能包括成员简介、活动流、用户组、消息传递等!
- WooCommerce:在WordPress上构建的高级电子商务解决方案。这是一个非常强大的插件,允许任何人在线销售实体和数字商品。
- 自定义帖子类型UI:易于使用的界面,用于在WordPress中注册和管理自定义文章类型和分类。
如您所见,前面的插件可以处理各种复杂的任务。这些插件添加的功能是通用的,互联网上的许多网站都可以拥有这些功能。
常用插件标签
现在您将看到一些流行的插件标签。插件标签就像博客文章标签,在插件目录中描述插件的简单必威滚关键字。这使得通过标签搜索现有插件变得很容易。以下是一些流行的例子:
- Twitter:每个人都喜欢Twitter上的微博和分享链接。必威滚你可以找到大量与Twitter相关的WordPress插件。
- 谷歌:有了这么多不同的服务和api,谷歌是一个流行的插件标签。从谷歌广告到谷歌地图,一切都集成到WordPress插件中。
- 块:大多数包含块编辑器集成的插件也使用块标签。这对于查看许多不同类型的可用WordPress块非常有用。
查看流行的插件标签可以为WordPress开发新插件提供灵感。
插件的优势
WordPress在使用插件时提供了许多优势。理解构建插件的优点是很重要的,这样才能真正理解为什么要花时间构建它们。这也有助于确定WordPress中某个特定插件的需求。
不修改核心
插件的一个主要优点是可以在不修改任何核心文件的情况下修改WordPress的行为。核心文件指的是任何作为默认WordPress安装一部分的文件。
当WordPress发布新版本时,黑客入侵核心文件会使更新WordPress变得困难。如果您对核心文件做了任何修改,当更新发生时,该修改将被覆盖。保持WordPress的最新版本是保持你的网站安全的关键。
修改核心文件也会导致网站不稳定。WordPress的不同区域依赖于其他区域来正常工作。如果你修改了一个核心文件,它不再像预期的那样工作,它可能会导致不稳定,很可能会破坏WordPress中一个完全不相关的功能。
为什么要重新发明轮子?
构建插件的另一个优点是插件的结构已经存在。许多通用特性已经开发好,可以在插件中使用了。例如,你可以利用WordPress中内置的用户角色。使用用户角色,您可以轻松地将代码限制为仅当用户是管理员时才执行。看看这个例子:
<?phpIf (current_user_can('manage_options')) {//此处输入的任何代码只会在IF中执行//用户为管理员用户}? >
正如你所看到的,在执行插件中的任何代码之前,验证用户是否具有适当的权限是很容易的。你将在第9章“用户和用户数据”中了解用户帐户和角色。
另一个例子,看看在WordPress中发送电子邮件。当然,你可以在插件中创建一个新函数来发送电子邮件,但为什么呢?WordPress有一个方便的函数叫做wp_mail ()
用于发送电子邮件。看看这个例子:
<?php$email_to = 'you@example.com';$email_subject = '插件邮件示例';$email_message = '你喜欢我的新插件吗?';Wp_mail ($email_to, $email_subject, $email_message);? >
正如你所看到的,在WordPress中发送电子邮件再简单不过了。除非你的插件需要一些定制的电子邮件功能,否则你不需要从头开始重新创建这个功能。使用这个功能还可以确保从WordPress发送电子邮件的最广泛采用,因为您使用的是内置功能。
使用WordPress现有的内置功能可以大大减少开发插件的时间。不重复工作的另一个好处是,这种方法通常会允许您的插件在更多的服务器和设置上工作,从而最大限度地提高兼容性。不要重复使用WordPress中已经存在的功能。
分离插件和主题
插件可以控制渲染过程;因此,插件可以成为一个“主题”。类似地,一个主题可以包含插件功能。正因为如此,两者之间的区别有时会变得模糊,所以为什么不直接将插件代码包含在主题中呢?这是一个常见的问题,可能有几个不同的答案。
主题应该包含插件功能吗?简短的回答是否定的。主要原因是插件是为了给WordPress添加特性和功能,而不管使用什么主题。这在你的网站设计和网站功能之间创造了一个很好的分离。需要这种分离的原因是,这样您的主题就不会直接与所需的功能绑定在一起。WordPress的构建使你可以轻松地改变你的设计,或主题,在任何时候,只需点击几下。如果所有的插件功能都在你的主题中,而你切换了主题,你将失去所有你需要的功能。
还有一种强烈的观点认为,某些特性应该包含在主题中。大多数主题包含的一个共同特性是面包屑导航。这个功能当然可以存在于一个插件中,并且有很多插件可以用于此功能,但是在主题中包含这个以导航为中心的功能更有意义。
简单的更新
WordPress可以很容易地将插件更新到最新版本。安装的每个插件WordPress.org
插件目录会在插件的新版本发布时提醒你。更新插件非常简单,只需点击插件面板插件细节下方的更新通知即可。
没有从插件目录中安装的插件也可以使用WordPress的自动更新功能进行更新。这是高级插件,特别是在插件目录之外的第三方网站上销售的插件推出更新的方法。插件作者必须定义WordPress可以在哪里下载最新版本,剩下的就交给WordPress了。如果插件作者没有定义这个位置,你必须手动更新插件。
保持插件更新是保持您的网站免受安全漏洞和错误的重要组成部分。
更容易共享和重用
插件很容易与他人共享。分享一个插件比告诉别人修改你的主题或WordPress中的特定代码行要容易得多。使用插件还可以在多个站点上轻松使用相同的功能。如果你找到一组你喜欢的插件,你可以很容易地将它们安装在你创建的每个WordPress网站上。
插件沙箱
当你在WordPress中激活一个坏的插件时,它不会破坏你的网站。如果插件触发了致命错误,WordPress会在它有机会造成严重破坏之前自动停用插件。这种故障安全特性使激活和测试新插件时风险更低。即使这个插件导致了死机白屏(错误消息),你也可以直接在你的web服务器上重命名插件文件夹,然后WordPress就会停用这个插件。这使得流氓插件不可能因为一个错误而把你锁在自己的网站之外。
另一方面,如果你要入侵WordPress核心,你可能会导致致命的错误,导致你的网站崩溃。这也包括对WordPress造成不可恢复的损害。
插件社区
一个巨大的社区围绕着插件开发,分享知识和代码,创建令人惊叹的插件。加入社区是让你的插件开发技能更上一层台阶的好方法。第16章“开发人员工具箱”涵盖了许多这些资源。
安装和管理插件
WordPress中所有的插件管理都在WordPress仪表板中的插件屏幕上进行。图1 - 2所示的菜单仅对WordPress管理员可用,因此非管理员无法看到此菜单。如果你使用WordPress的多站点功能,插件菜单默认是隐藏的。您需要使用My Sites➪Network Admin➪Settings启用菜单。
图1还是2:插件菜单
安装插件
WordPress有三种不同的安装新插件的方法。您的服务器设置决定使用哪种方法是最好的。
第一种方法使用内置的自动安装程序。此方法使您能够搜索插件目录WordPress.org
直接从你的WordPress网站的仪表板。只需访问插件➪从你的WordPress仪表板添加新的搜索插件。找到要安装的插件后,单击“立即安装”按钮,插件就会自动下载并安装。
第二种方法使用zip上传器。压缩插件文件可以通过WordPress上传、解压和安装。要使用这种方法,请单击“添加插件”页面顶部的“上传插件”按钮。单击“选择文件”按钮,选择要安装的插件zip文件。选择插件后,单击Install Now按钮,如图1 - 3所示。
图1还是3:立即安装按钮
在WordPress中安装插件的第三种也是最后一种方法是使用安全(或SSH)文件传输协议(SFTP)。使用SFTP只需使用SFTP客户端连接到您的web服务器,并手动将插件上传到您的WordPress安装。要使用此方法,请将未压缩的插件文件夹或文件上传到wp /插件内容
目录在您的web服务器上。
管理插件
在WordPress中安装插件后,您可以在plugins➪Installed plugins屏幕上管理它和所有其他插件。在这里你可以找到你的WordPress安装中所有可用的插件的列表,无论激活与否。您可以轻松地激活,取消激活,编辑,更新和删除插件从这个屏幕。
Plugin屏幕还提供了用于激活、取消激活、更新和删除插件的批量操作。检查你想要管理的所有插件,然后从下拉菜单中选择适当的批量操作。这个过程使得管理多个插件变得轻而易举!
编辑插件
WordPress在Plugins➪插件编辑器屏幕上提供了一个内置的插件编辑器。插件编辑器使您能够查看和编辑安装在WordPress中的任何插件的源代码。请记住,只有当插件文件可由web服务器写入时,您才能编辑源代码;否则,您只能查看代码。
要使用编辑器,请从“编辑插件”页面右上方的下拉菜单中选择插件。编辑器会列出与所选插件相关的所有文件。还有一个文档查找功能,可以很容易地研究你正在审查的插件中特定函数的用途。
警告
使用内置插件编辑器时需要注意的一点是:浏览器没有撤销按钮。也没有代码修改历史,所以一个错误的代码编辑可以使你的整个网站崩溃,没有办法恢复所做的更改。最好只使用代码编辑器作为参考,不要用它来编辑你的插件文件。
插件目录
一个鲜为人知的事实是WordPress实际上有两个插件目录。主目录位于wp /插件内容
在标准的WordPress安装中。第二个鲜为人知的插件目录是atwp公/内容/μ的插件
.的μ应承担的插件
目录,它代表必须优先使用,不是由WordPress自动创建的,所以必须手动创建才能使用。
两者之间的主要区别是μ应承担的插件
目录用于始终执行的插件。这意味着如果你运行Multisite,这个目录中包含的任何插件都会自动加载到WordPress和网络中的所有站点中。Mu‐plugins总是打开的,不能关闭。
请注意
的μ应承担的插件
目录不会读取子文件夹中的插件,因此所有插件必须是单独的文件或必须包括存在于子目录中的附加文件。子文件夹中的任何插件文件都将被忽略,除非包含在主插件文件中。
插件类型
WordPress有几种不同类型和状态的插件,如图1 - 4所示。在管理和创建WordPress插件时,您需要了解其中的区别。
图1还是4:插件的类型和状态
- 活动:插件是活跃的,并在WordPress中运行。
- 活动:插件已安装但未激活。插件中的任何代码都不会执行。
- 最近活动:一个临时的状态,给予任何插件,最近已停用。
- 必须优先使用:所有插件安装在
wp公/内容/μ的插件
目录中。所有必须使用的插件都会自动加载。禁用MU插件的唯一方法是将其完全从目录中删除。 - 量下降英寸:WordPress的核心功能可以被Drop - in插件取代。这些插件被指定为PHP文件,位于
wp应承担的内容
目录中。如果WordPress检测到其中一个文件,它将被自动加载,并在插件屏幕的下拉过滤器中列出。目前有10个Drop‐in插件可用。先进的列车cache.php
:高级缓存插件db.php
:自定义数据库类db error.php应承担的
:自定义数据库错误消息install.php
:自定义安装脚本maintenance.php
:自定义维护消息地理对象cache.php
:外部对象缓存sunrise.php
:高级域映射必威滚博客deleted.php应承担的
:自定义博客删除消必威滚息必威滚博客inactive.php应承担的
:自定义博客非活动必威滚消息必威滚博客suspended.php应承担的
:自定义博客挂起消必威滚息
最后四个插件是针对WordPress Multisite特性的。标准的WordPress安装对这些插件没有任何用处。
在开发一个新插件时,在开始开发过程之前确定你想要创建的插件类型。大多数插件都是标准的WordPress插件,但偶尔你可能需要创建一个必须使用或导入的插件。
总结
在本章中,你学习了插件以及它们如何使用可用的api与WordPress交互。讨论了使用插件的主要优势以及为什么插件功能不应该总是包含在主题中。介绍了如何在WordPress仪表板中安装和管理插件。
现在您已经了解了插件在WordPress中的工作原理,是时候创建插件基础了!