郭訓華,莫亭亭,劉武
(上海交通大學電子信息與電氣工程學院,上海 200240)
建設創新型國家需要強化科研設施與儀器的開放共享,為提高貴重儀器設備使用效率,上海交通大學微納電子學系成立了微納分析測試平臺(后簡稱平臺)。平臺實行預約使用制度,最初采用微信群預約,這種方法雖然簡單,但由于預約信息分散,導致預約查詢、機時統計不方便,同時還存在預約消息干擾等缺點。為克服這些缺點,上海交通大學微納電子學系決定開發一款具有后臺數據庫的網上預約系統,實現網上預約,提高預約數據管理水平。
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網站上開發,不僅能節省域名申請和網站建設工作、降低軟硬件和網絡資源投入,而且還可以提高信息集成度。本文將分析這種應用的可行性并完成預約系統開發。
LAMP(Linux、Apache、MySQL 和PHP) 是Word-Press平臺常用的一種運行環境,所使用的軟件都是免費開源的,是公認的成熟的架構框架[5],如圖1 所示,上海交通大學微納電子學系網站就采用此架構。

圖1 LAMP系統架構
預約系統的軟件架構與LAMP 環境類似,唯一的區別是WordPress 管理軟件。如果WordPress 管理軟件能夠實現設備預約功能,那么LAMP 環境就適用于預約系統。
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