从我从头创建一个新的WordPress插件已有一段时间了,但是最近我决定将一些仅对我有用的代码转换为可以分发的完整插件。该过程的一部分涉及用插件的未来用户可以设置的选项替换硬编码数据。
我需要在插件中创建一个设置页面,我发现自己想知道在瞬息万变的WordPress世界中,最新、最好的方法是什么。让我们看一下将设置选项页面添加到WordPress插件的各种方法。
- WordPress设定API
- 自定义字段框架
- 使用代码生成器
- 使用REST API
- VueJS
- React
WordPress 设置API是在WordPress 2.7引入的,允许开发人员在仪表板设置页面添加新的字段,或创建新的设置字段。WordPress会智能地显示并采取保存数据:
这是本文中讨论的方法中最手动的方法,但是值得了解它的工作方式,在某些情况下,这是一种可能非常简单的方法。
首先,我们需要注册一个新的菜单项和页面,其中将包含我们的设置表单。让我们在WordPress仪表板的“设置”顶级菜单项下添加页面:
第五个参数是用于显示页面内容的函数的名称,它将用于输出设置表单。该函数需要有一个表单元素和一些函数调用才能与设置API进行通信:
函数呈现代码以告知表单要执行的操作,以及隐藏输入以使用nonce使其安全。传递给函数的参数是设置组的名称,该名称将在以后注册。
函数是表单的关键部分,在这里输出所有部分和字段(文本框、选择框、复选框等),以便用户可以输入数据。同样,该函数参数是任意的,但必须是唯一的。我们将在注册字段时使用它。
让我们这样做:
这里发生了三件事。首先,我们使用 为我们的设置在表中创建新记录,其中’‘作为。
我们的个人设置将存储为序列化的数据数组。这非常适合将我们所有的插件设置集中在一个地方,但是,除非正确处理,否则数据序列化在迁移WordPress数据库时可能会导致问题。第三个参数是函数的名称,该函数处理在保存选项时验证输入的数据。
例如,确保API密钥是一个仅包含数字和字母的32字符串:
其次,我们正在注册一个与选项绑定的组部分。最后,我们使用 来为该组注册三个字段。所有这些都是用于保存插件设置的文本字段。
接下来,我们需要创建函数以显示该部分的有用文本并在表单上呈现字段:
就是这样,然后我们就有了一个设置页面:
我们要在代码中使用这里设置值的时候,可以通过使用来获取这些设置的数组数据。
这种方法注册设置选项有些繁杂,有很多字段代码重复,要不断复制和修改,并确保所有内容正确组合在一起。好在有开发者进一步封装了一些类或代码框架,以便大家可以更方便地添加设置:
- https://github.com/tareq1988/wordpress-settings-api-class
- https://github.com/ahmadawais/WP-OOP-Settings-API
- https://github.com/jamesckemp/WordPress-Settings-framework
谈到PHP框架,我想展示一种无需使用WordPress设置API即可创建设置页面的替代方法。在为客户端构建站点时,如果需要设置页面,则默认使用“Advanced Custom Fields ”插件(简称ACF)创建选项页面,并使用它来定义字段。
这是我喜欢使用ACF的众多原因之一:它使复杂的WordPress变得简单。(您是否看过ACF Blocks,它是一个PHP包装器,可在不接触React的情况下为古腾堡编辑器注册块?)
但是,在构建用于分发的插件或主题时,您不能依赖安装了ACF的用户。在这里我推荐“ Carbon Fields ”框架。与ACF不同,Carbon Fields不是插件,通常作为库安装在插件内部,推荐的方法是使用Composer。
安装完成后,首先确保引入 Composer 的文件,然后使用下面的函数启动Carbon Fields库:
要复制我们使用WordPress设置API所做的工作,只需要使用下面简单的代码:
框架可以使用更少的代码来实现功能,让您更专注于编写插件代码,而不是重头开始编写设置部分的代码。
另一种比WordPress设置API、以及框架更简便的方法是使用以下WordPress生成器之一:
- WP设置API – http://wpsettingsapi.jeroensormani.com/
- WordPress选项页面生成器https://jeremyhixon.com/tool/wordpress-option-page-generator/
- GenerateWP(高级)https://generatewp.com/settings-page/
让我们使用WordPress选项页面生成器重新创建设置页面。它仅支持少数字段类型。文字、文本域、选择、单选、复选框,没有日期选择器。
以下是通过生成器生成的代码,可以直接在插件中使用,并以与WordPress设置API相同的方式使用数据:
生成器是一个非常有用的工具,可通过一个现成的设置页面启动您的插件,无需进行大量编码即可对其进行调整。它们还可以帮助您学习代码的工作原理,分离现有代码并查看它们如何组合在一起。但是,从长远来看,对于需要对设置代码进行大量更改的插件来说,它们可能不是最佳选择。
在《使用WordPress REST API创建WordPress设置页面》一文中,Josh Pollock深入探讨了如何使用REST API和jQuery 创建设置页面。我不会用这种技术来重新创建设置页面,因为本文是一篇非常详尽的教程。
REST API可以提供优于传统 请求的性能优势,再加上单击“保存”无需刷新页面即可在后台保存表单设置,这种方法比WordPress设置API更友好。
Josh指出,随着添加设置和表单变得越来越复杂,“使用jQuery将会做得越来越多,这很难管理而且会更简单,并且如果您使用VueJS或React可以提供更好的用户体验” ,这使我很好地了解了下一个方法,即VueJS支持的设置页面。
在去年收购 WP User Manager 插件的过程中,我调查了代码库以了解其编写方式,并发现设置页面由使用REST API和VueJS的软件包 – wp-optionskit 提供支持 :
该软件包可随Composer一起安装,并使用此处的代码实例化和配置设置页面。这是我们的示例设置页面的外观:
我喜欢这种方法的地方在于,它允许您仅通过在PHP中配置数据数组来生成具有多个选项卡和小节的复杂设置页面。与其他方法一样,设置数据存储在选项表的一条记录中,因此这是一种检索和使用保存的数据的熟悉方法。
等一下,VueJS?WordPress不会全力投入React吗?
尽管WordPress采用了 React 来构建WordPress编辑器界面(WooCommerce甚至使用 React 重构了后台界面),我还没有看到任何以 React 为基础的框架,用于创建插件的设置页面。但是,正如我们在wp-optionskit中看到的那样,使用REST API为在WordPress管理员中广泛使用VueJS或React打开了大门。
与万物发展一样,实现同一事物的方法有很多,而您为一个项目选择的方法可能与另一个项目不同。目前,我个人最喜欢的是wp-optionskit,因为它允许多个设置选项卡和小节,并且在保存时提供更好的用户体验。
您用于为插件创建WordPress设置页面的方法是什么?欢迎在文章中评论告诉我们!
原文出自: https://deliciousbrains.com/create-wordpress-plugin-settings-page/ ,由 WordPress大学 翻译整理。
来源: