前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >强大的WordPress表单插件 Forminator : 用API定制开发你的第一个插件

强大的WordPress表单插件 Forminator : 用API定制开发你的第一个插件

作者头像
丘壑
发布2019-03-13 10:32:12
3.2K0
发布2019-03-13 10:32:12
举报
文章被收录于专栏:一丘一壑

从表面上, Forminator似乎只是一个不起眼的Wordpress表单插件(form plugin),但如果你花点时间浏览Forminator API ,你会发现它不仅外表时髦,内心也很狂野。

与其他表单插件不同,Forminator的API不用支付昂贵的费用,可供所有人使用。这为定制化开发提供了无限可能性,也能使用Forminator来创建独特的应用和扩展。

更棒的是,作为开发人员,能够以Forminator为基础,为你的客户创建自定义的业务解决方案,然后你可以在公开市场上销售并获得额外的收入。在Forminator API中有很多值得等待解锁的价值。

在这篇文章中,我将向你展示如何利用Forminator API在WordPress中构建一个简单的插件。但是,这个插件不是本教程的重点,我的目标是通过这个插件的开发过程来教你如何开发自己的东西。希望能抛砖引玉,对你有所启发。

教会一个人使用API,他将终身受用

Forminator API支持对各种表单类型及表单数据进行增删改查(CRUD)操作。

以下是一些可用的方法(method):

  • get_forms()
  • delete_form()
  • add_form()
  • update_poll()
  • delete_quizzes()
  • get_form_fields_by_type()
  • update_form_setting()
  • move_form_field()
  • add_form_entry()
  • update_poll_entry()

上面列出的只是一部分。Forminator的API文档列出了所有可以用于开发插件的方法。

本教程中,我们将为WordPress管理后台构建一个自定义小部件(widget),这个小部件将使用Forminator API查询某个表单并把表单数据展示在管理后台中,你也可以修改成在页面(page)或在日志(post)中显示。

这就是我们要构建的内容

首先,我们需要在WordPress中创建一个插件 。由于这是一个Forminator 的扩展(插件的插件),我们只希望在Forminator处于激活状态时运行该扩展,因此我们将使用forminator_loaded这个动作(Action),并且只在执行了该动作后再运行我们创建的插件。在你自己为Forminator开发扩展时,记住这一点也很重要,当然,名字你可以随便取,不一定叫forminator_loaded。

设置仪表板小部件

现在我们可以开始创建一个仪表板小部件了,你也可以选择从这里开始创建自己的插件。根据你要创建的插件类型,你可能用不到管理后台的仪表板小部件。

在本教程中,我们将使用wp_dashboard_setup将小部件添加到WordPress的仪表板页面。我们将在wp_dashboard_setup钩子被调用之后加载小部件。

在下面的函数add_forminator_dash_widget中,我们将实例化Forminator_Submissions_Dash_Widget类(稍后会创建这个类)。

创建仪表板小部件的类

下面这段话引用自WordPress的codex:

你的插件中所有函数的名称都应该与现存的Wordpress Core函数,其他插件或主题的任何名称不同。基于这个原因,我们建议你在你的插件的所有函数的名称之前加上一个你自己选择的前缀,或者把你的插件的函数都写在一个类里面(当然这个类的名字也必须是唯一的)。

不过,我们将采用一个更好的方法,创建一个独一无二的插件类Forminator_Submissions_Dash_Widget,我们将用这个类进行一系列操作,存储类的实例、指定表单ID(从哪个表单获取数据)、输入需要获取的数据条数。

请注意,本教程中的代码是被故意的分成一块块的,是为了防止你直接复制粘贴到线上的Wordpress后不小心把网站搞乱,要记住它们其实要放在一起的。如果你想在你的网站上直接使用这个插件,我建议在GitHub上获取完整代码,而不是一点点的复制粘贴。

为了实例化插件类,你需要获取到类实例。

接下来我们将声明构造函数(它是空的,因为不需要先决条件),然后把仪表板小部件进行注册。

我们不希望所有WordPress用户都能看到这个小部件,因此可以添加user_allowed()用来鉴权。

下一节中我们将这个小部件创建一个选项对话框。现在先设置一个默认值作为回退(fallback),如果小部件的选项没有设置,那么就使用默认值。

如果用户有查看小部件的权限,就会看到表单的数据,否则将收到一条提示消息。

小部件的选项配置

为了让用户能够配置小部件,我们将添加一个如下所示的选项对话框。

您可以在此处指定要查看的表单和条目数

为此,你需要添加configure()方法用来获取和更新选项值,以便配置小部件。

让我们从configure()方法开始:

如果要更新配置,我们需要从数据库中获取到小部件的所有选项值,用一个数组将旧选项替换为新选项。

接下来,我们将从数据库中获取小部件的选项值。

Forminator的重用

现在,终于来到了你期待已久的部分,使用Forminator API为我们的仪表板小部件填充数据。

为了获取表单的数据,我们将使用Forminator_API :: get_form()Forminator_API :: get_form_entries()。还需要检查一下是否填写了表单的ID,如果未填写ID,提示用户重新设置。

还要确保表单已经成功加载并且成功显示数据表格。

所有这些都在get_submissions()方法里完成,如下所示:

现在我们能拿到表单和表单的数据了,还需要创建一个封装html的方法用来显示在网页上。所以,我们将使用render_form_submissions()把表单数据和数据的条数(之前配置好的)显示在一个HTML表格中。

现在就齐活了,你可以使用Forminator API来获取并展示表单的数据了!

如果你对进一步自定义WordPress管理后台感兴趣,请查看 customizing the WordPress back end 、 creating a marketing dashboard in WordPress.

如果你想在网站上直接使用这个小部件,可以在GitHub上获取Forminator Dashboard Widget的完整代码。

结束语

这个仪表板小部件只是一个简单演示,只使用了Forminator的一成功力而已。深入了解一下Forminator API ,看看你创造出点什么。

你可以在这里完全免费获得Forminator 。

有兴趣了解更多关于开发的知识吗?看下这个 how to write functions.

我们迫不及待地想看看你在Forminator框架上构建了什么很酷的东西.

译后记:

本篇算是填了上一篇 的坑,Forminator插件系列的第二篇吧 。我之前也并没有开发过wordpress插件,但是这个Forminator激起了我的兴趣来了,正好可以借此机会了解一下插件开发,不用完全从零开始。

原文地址:https://premium.wpmudev.org/blog/how-to-build-custom-forminator-add-ons-using-the-developer-api/

作者 Felicia Ceballos-Marroquin 是个美女,教程写的也算比较清晰

widget这个单词挺常见的,不仅在wordpress中,在其他地方,比如树莓派机器人的文章中也经常出现,在汉语中还真的有点不好表述,有的翻译成小部件,有的叫小工具,还有的叫小玩意,挂件?。纠结了这次,以后就不翻这种蛋疼的单词了。。。知道是啥就完了,应该基本上都能理解吧。就比如NBA,有必要翻译吗。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 教会一个人使用API,他将终身受用
  • 设置仪表板小部件
  • 创建仪表板小部件的类
  • 小部件的选项配置
  • Forminator的重用
  • 结束语
  • 译后记:
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档