基于WordPress的预约系统开发研究
2023-11-25郭训华莫亭亭刘武
郭训华,莫亭亭,刘武
(上海交通大学电子信息与电气工程学院,上海 200240)
0 引言
建设创新型国家需要强化科研设施与仪器的开放共享,为提高贵重仪器设备使用效率,上海交通大学微纳电子学系成立了微纳分析测试平台(后简称平台)。平台实行预约使用制度,最初采用微信群预约,这种方法虽然简单,但由于预约信息分散,导致预约查询、机时统计不方便,同时还存在预约消息干扰等缺点。为克服这些缺点,上海交通大学微纳电子学系决定开发一款具有后台数据库的网上预约系统,实现网上预约,提高预约数据管理水平。
WordPress 是一款内容管理系统(CMS,Content Management System),它为用户提供了图形化管理界面,即使用户没有PHP 和HTML 等语言基础,也可以对网站进行管理和维护[1]。据网站架构和技术分析软件wappalyzer 官网提供的数据,2023 年WordPress 在CMS市场的占有率为75.3%[2]。
对WordPress的研究和应用主要集中在内容管理方面,例如,张素红的基于WordPress的高等数学在线教育平台的设计[3],利用Astra 主题和Tutor LMS 插件实现了视频播放、成绩测试和线上互动等功能;罗黎霞的基于WordPress 的课程管理系统的开发与研究[4],通过商用插件和开发主题构建了网络课程管理系统。
但在实际应用中,还可能在其他应用领域对WordPress 提出需求。比如某单位采用WordPress 建设了门户网站,后来该单位又出现建设网上预约系统需求,在这种情况下,如果能在已有WordPress网站上开发,不仅能节省域名申请和网站建设工作、降低软硬件和网络资源投入,而且还可以提高信息集成度。本文将分析这种应用的可行性并完成预约系统开发。
1 WordPress开发预约系统可行性分析
1.1 软件运行环境可行性分析
LAMP(Linux、Apache、MySQL 和PHP) 是Word-Press平台常用的一种运行环境,所使用的软件都是免费开源的,是公认的成熟的架构框架[5],如图1 所示,上海交通大学微纳电子学系网站就采用此架构。
图1 LAMP系统架构
预约系统的软件架构与LAMP 环境类似,唯一的区别是WordPress 管理软件。如果WordPress 管理软件能够实现设备预约功能,那么LAMP 环境就适用于预约系统。
1.2 功能实现可行性分析
WordPress 是面向内容管理的软件,本身没有提供预约功能,但它为用户提供了许多扩展功能的应用接口(API) ,包括插件(Plugin) 、微件(Widget)、短代码(Shortcode)、REST API 等。根据预约系统特点,提出两种WordPress 开发预约系统的方法:插件法和超链接法。
1.2.1 插件法
插件是一种基于PHP语言的脚本,可以扩展或改变WordPress 核心功能[6]。插件程序通过add_action()函数链接到WordPress的钩子(hook),这样当钩子运行时,插件也会被运行。主要挑战如下:
1.2.1.1 表单
表单是预约系统的关键功能,浏览器通过表单将预约信息提交给服务器,产生表单有两种方法:一是用PHP 代码直接输出包含表单的页面;二是将表单HTML 代码转换成短代码,通过页面内插入短代码添加表单。商用表单插件Formidable Forms 就采用了短代码方式。
提交表单有以下三种方式:
1)提交到admin-post.php或admin-ajax-post.php
WordPress 在admin-post.php 和admin-ajax-post.php 文件中创建了四种钩子,可利用这些钩子实现表单处理。以钩子admin_post_nopriv_{$action}为例,使用方法如下:
第一步:表单中将表单提交地址设置为adminpost.php