随着互联网技术的发展,越来越多的站长包括 学校教师开始有了自建信息平台的需求,对于这一类人群来 说,Wordpress 系统具有无需编程、易操作、易维护和免费开 源的优势,非常适合初学者建站使用,同时其支持二次开发的 特性,使得站点能够进行定制开发。本文介绍了如何突破 WP 现有框架,实现开发具有生命周期的页面框架搭建过程。
一、前言
Wordpr ess(以下简称 WP)是一款使用 PHP 语言以及 MySQL 数据库编写的博客系统平台,它具有完善的账户管理组 件、安全系数极高的数据库管理组件还拥有庞大的社群在使 用该平台,开发者正不断地为其开发各类插件,因其具备二 次开发能力,所以当开发者只需要掌握 PHP 语言,就能够基 于它所提供的基础组件实现快速开发新功能的能力。
WP 拥有一个非常庞大的应用市场,通过该应用市场,站 长能组建出各种功能不一的网站。当然除了方便搭建应用功 能之外,对于开发者来说,它是一个极其优质的学习资源 库,各类插件在安装之后,开发者就可以通过登录系统,查 看 WP 源码的方式看到插件的源代码,学习他们的实现过程, 甚至可以做到功能增强。传统的网页设计需要较高的技术水平 才能实现网站开发,而WP 的出现使得很多不懂得网站开发的 人群也能够通过WP 实现快速建站的能力,这将改变网站开发 的方式与途径。
生命周期理论一般是指产品生命周期 / 行业生命周期与 需求生命周期,主要阐述的是某一事物从发展、成长、成熟一 直到衰退的整个过程。对于网站页面而言,同样也有这样的需 求,知道当前页面是否创建完成,知道页面是否有被用户显示 或隐藏。当页面具备生命周期后,就可以通过它完成很多个性 化的事情,使得系统平台互动性大大提升。
WP 具备一个高级组件“钩子 ”(Hook),通常也被称之为 “过滤器 ”(Filters)和“动作 ”(Actions),页面生命周期的 触发方式就是通过“钩子 ”将需要实现的函数“钩进 ”系统中, 在需要使用该“钩子 ”的时候,只需要通过“动作 ”函数,即 可在特定时间点执行对应功能。
二 、环境搭建
WP 可以运行在任何支持 PHP 和 MySQL 的服务器上,如 Windows、Linux、Unix等。通常用户可以在腾讯云或者阿里云 上创建相关服务器,以便搭建的云服务能够在公网上被访问, 本文选择的云服务提供商为腾讯云。
(一 )硬件选择
信息服务平台需要考虑高并发与高负载问题,因此硬件 的选择就显得格外重要,如果开发者将服务完全写在一个平台 上,这将导致单体应用问题的产生,在访问人数超过一定数量 后,服务器配置就不足以支撑该用户数量,单方面升级单台服 务器的价格在前期还能接受,但是单台服务器配置是有上限 的,这将导致升级到某一配置后无法再进行升级拓展,因此我 们需要将数据库、前端以及后端的开发完全分离开,通过微服 务的思想架构来设计整套程序应用。同时负责不同服务的硬件 配置也可以有参数上的区别,而提高负载的做法就是往服务器 集群中新增服务器,当服务器负载率变高,经过负载均衡与限 流策略,该请求就会由另一台低负载率的服务器接收并处理。
(二)系统安装与部署
WP 系统的安装非常方便,只需要在服务器下安装LNMP 安 装包,系统便会自动安装好Nginx、PHP与MySQL应用。并在对 应的wwwroot 目录下通过 lnmp vhost add 命令添加对应站点 信息,将WP 压缩包在站点目录下解压即可。
通过域名登录站点后,就可以配置站点信息,如:数据库 名称、数据库账户、数据库密码、数据库 IP 以及数据库前缀, 只要配置信息正确,点击下一步后,系统会自动将数据库以及 文件配置好。
(三)数据库对接
数据库可以选择本机安装的MySQL,其主机IP只需要填写 127.0.0.1 即可,但是考虑到数据的安全性、计算机资源的合 理使用,我们可以在同一个子网下再次创建一台新的云服务 器,将数据与前端服务器分离开,此时主机IP就需要填写对应 的内网IP,需要注意的是,不同子网下的服务器是不可以通过 内网 IP通讯的,而需要使用外网 IP,但是外网 IP 的带宽是有 限制的,开发者需要合理分配计算机的网段。
三 、框架设计
WP 的二次开发一般指的是主题模板开发,即使用其提供 的内容接口,完成页面设计即可,这种主题模板开发一般不需 要开发者具备数据库操作方面的能力就可以实现定制开发。但 由于只能使用WP 系统提供的接口,因此整个系统只能实现博 客的展示,局限性比较大,要想进行更深层次的二次开发,开 发者就必须掌握如何使用wpdb 组件进行数据库操作,同时需 要对相应的文件进行调用,这就出现了一个耦合性问题,本文 将在文件配置章节中介绍相应的解决方法,使得开发者非常方 便地掌握文件引入系统的顺序。
(一)文件框架
要进行WP系统二次开发,我们就需要在WP系统的主题目 录(wp-content/themes/)下新建系统文件夹,文件夹的名
称与系统名称保持一致,由于WP 系统下可以下载各种各样的 主题,所以要想使用新系统,还需要到后台管理页面(域 名 /wp-admin/)进行主题激活,点击管理页面中主题的激活 按钮即可。
完成激活后,用户登录域名时,WP系统就会自动将用户的 请求链接引导至对应系统的 index.php 上,如图 1 所示,最后 一行的index.php就是首页文件,用户在获取到该PHP文件后, 服务器便会自动将内容进行解析,并将最终需要输出的内容反 馈给用户。
图 1 文件框架
其中 assets、plugins、utils 以及 web 都是文件夹, assets 中存放各种不同的资源文件,比如样式表、图片与 js 文件,plugins 用来存放所有设计成模块的组件或者第三方 API 库,utils 用于存放一些公共函数,web 中用来存放页面 文件,当然页面之间也有分类的要求,因此本文将不同功能的 页面,放置在了不同的app 目录下,需要注意的是,由于每一 个服务都将独立开,因此不同的app目录下都有一套完整且独 立的子系统文件框架,即拥有自己的functions.php、style. css、index.php、header.php 以及 footer.php。这种设计方 式可以使得同一个站点下可以有各种不同的主题,而且不会 互相干扰。在app 目录下,还借鉴了MCV 架构,让目录结构更 加清晰化。
本文要设计的页面框架是完全不依赖WP 的已有框架,因 为WP系统规定自定义页面只能存放在一级目录下,但是从图 1 中可以看到,本系统可以进行多服务设计。
(二)文件配置
在系统开发中,由于文件数量非常多,而且需要根据用 途,进行各种目录分类,如何精确掌握引入文件的顺序是一个 非常棘手的问题。本文通过编写了一个读取配置文件的类,能 够实现根据配置,实现文件自动引入文件的功能。配置文件如 下所示:
<?php
$requireFiles = array( ‘目录名称 ’ => array(import' => array( ‘文件名 ’),), ; ?
配置文件中使用的是PHP数组结构,数组中的元素可以由 开发者任意修改位置,靠前的文件能够被系统优先引入,而靠 后的文件就会被滞后引入,通过这种方式,开发者可以随意修 改系统引入文件的时机。同时在一个文件夹下可以配置单独的 文件引入配置,使得整个系统的文件引入被分成了全局引入与 局部引入的概念。
(三)网页链接配置
用户在登录网站的时候,必须通过对应的地址进行访问, 开发者可以通过页面文件配置让系统自动生成相应的网页链 接。在web 目录下的每一个 app 目录下都有一个 view 文件夹, 里面存放的是该分类的网页源代码,同时还有一个配置文件 pagelink.json,网页链接的生成同样也是通过配置文件实现, 具体配置代码如下所示:
{ "basic": {
"title": "BasicOpe",
"children": {
"login": {
"title": " 登录 ",
"path": "web/basic/view/login.
php"
}
}
}
用户可以通过输入对应的节点名称就可以实现页面的登 录,比如:“域名 /basic/login/ ”即可进入登录界面。
(四)代码解析器设计
为了简化页面设计的流程,本文将原有的 HTML 语法结构 重新设计成数组结构式的变量,若直接通过这种方式编写页面 的话,确实比原有的 HTML 更加麻烦,但是其最大的一个好处 就是结构清晰,易于重组,还可以将其以函数的方式编写,使 得页面中的每一个大组件都可以通过调用函数提供参数的方 式获得完整的代码结构。
array(
'element' => 'div',
'children' => array(array(
'element' => 'input',
'type' => 'text',
'placeholder' => ' 用户名 ', 'name' => 'Input_userName'
))
系统通过一个代码解析器将上述结构化代码解析成为通 用的 HTML 语法,并输出给用户,大大提升了开发效率。
四、生命周期页面框架的技术实现
完成上述基础的底层建设后,系统就可以正常进行页面 的设计,我们通过WP 系统提供的add_action()与 do_action ( )配置对应的生命周期过程,使得页面能够监控到何时被 创建,何时加载完样式表,何时加载完 body 代码,何时加 载完 js 文件,同时搭配 js 逻辑语言,实现页面显示与隐藏 状态的监听。
在对应页面中只需要使用如下代码,即可完成生命周期 的配置,在对应生命周期中,页面会自动执行对应函数代码:
<?php
// 生命周期函数 onLoad :加载页面开始时触发 的事件
function onLoad() { }
// 生命周期函数 onShow :加载完成 CSS 样式表 之后触发的事件
function onShow() { }
// 生命周期函数 onReady :加载完页面所有元素 之后触发的事件
function onReady() { }
// 生命周期函数 onFinished :加载完基础 JS 文 件后触发的事件
function onFinished() { }
// 生命周期函数 onReshow :页面被切换或最小 化时触发的事件
function onReshow() { }
// 生命周期函数 onHide :页面被隐藏时触发的 事件
function onHide() { }
?
五 、 结论
针对 WP 系统进行二次开发,入门简单,能让开发者快 速实现建站,但是受框架束缚,开发者只能开发出博客信息 的展示功能。若需要进一步开发定制功能,则需要配合使用 wpdb 数据库操作函数的使用,可是前端开发依旧如传统开发 一样,需要使用标签语言开发,效率低下,本文设计了一 套文件引入系统、页面链接生成器、代码编译器,使得开 发者可以突破WP 系统的约束,实现快速配置站点链接、并且 突破WP 系统自定义页面的一级目录限制,使其能够按照页面 的功能进行分类。该平台是能够使开发者快速构建出网页群 的基础框架,灵活使用该框架能够极大提升开发效率,基于 WP 系统的优势,站点能够更加容易维护。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.gezhanwang.com/2024/01/24/wordpress-2/
共有 0 条评论