记一次wordPress博客插件开发

终于准备开始写博客了,又懒得自己再去写一个,虽然简单,但是很烦。

说实话,很早以前就知道wordPress,也知道这货就是个“臃肿”的博客系统,但是可扩展性意外的强,抱着“反正博客访问量又不会很大,臃肿点也没关系”的想法安装了WP。

装完WP过后,发现并没有地方可以设置静态生成之内的东西,顶多只有伪静态,不知道是为啥,我用动态的方式,访问首页也好,内容页也好,页面请求都要等大概1s~2s才完成(单次页面请求, 不是完整加载), 用静态的方式就完全没问题!一次请求大概30ms,便开始琢磨,去插件中心找找静态的插件。

找了一圈,着实没找到合适的,其中一个甚至有点搞笑...生成了一个html静态文件,然而却是用php去访问这个html文件再输出...那和直接动态有啥区别?就是少一次数据库请求而已。

没办法,想着自己尝试写一个插件,不过介于并没有PHP开发经验,便开始看了下官方文档,意外的发现文档很全,毕竟有其他语言的开发经验,PHP代码还是很好上手的。

好了,废话到这里结束。

1.新建结构

按照官方文档所讲的, 第一件事应该是在wp-content/plugins目录下新建一个文件夹作为插件的目录, 我这里起名叫wordpress_quick, 同时进入文件夹, 新建同名php文件wordpress_quick.php

使用IDE或者notepad++打开文件, 不推荐用记事本, 否则会有UTF-8 BOM问题, 如果刚刚新建的PHP文件是使用右键-新建文本文档的方式建立的话,最好使用notepad++打开,然后编码-使用UTF-8, 否则可能PHP会直接报错。详情请百度PHP UTF-8 BOM

开始编辑wordpress_quick.php文件, 写入最基本的插件信息

这时候就能在插件管理中看到你的插件了

2.了解WP的相关API

我这次的目的是在文章发布过后, 自动生成静态页面, 这里需要先确定几个问题

1.确定目录结构

2.确定生成时机

这里先确定目录结构, 我使用的是/article/%year%%monthnum%%day%/%post_id%.html, 这个在设置-固定链接里面修改, 修改完过后, 文章的URL应该为http://xiaoc.cn/article/2018_12_05/35.html这样子

如果修改完过后, 发现打开是404了, 那么说明你的主机\VPS没有配置好URL重写相关的东西, 这里以我用的IIS为例, IIS需要单独下载URL重写的安装包进行安装后才能正常使用该功能。详情百度IIS URL Rewrite

目录结构确定了, 接下来是生成的时机, 考虑了下, 至少需要在发布文章、修改文章、删除文章、评论通过、评论拒绝、评论列入垃圾列表、删除评论这几个地方重新生成或者删除缓存文件。

好在这些东西都是有相应的动作;在WP中,基本上所有的操作均会触发相应的动作、触发器,我们只需要注册相应的动作、触发器即可。

动作使用add_action进行注册,这里我们需要用到这几个动作:

publish_post (文章的发布/修改/从回收站恢复时都会触发该动作)

wp_set_comment_status(所有评论相关的操作都会触发该动作)

wp_trash_post(文章被放入回收站时,会触发该动作)

构建代码

接下来就是构建PHP代码的阶段了, 我现在写这篇文章才真正接触PHP代码第三天, 基本上是PHP 0基础,所以写的烂代码不接受任何反驳!

由于是完全静态化,所以这里根据之前确定的目录结构,先写好创建多级目录的函数

然后是创建一个方法,用于生成静态文件,生成的方法比较特别...

好了,生成静态文件的方法完成了,接下来就是给这个方法注册上相应的动作

接下来就是激动人心的测试阶段,正常的话,在点击发布过后,WP根目录会自动生成article文件夹,否则你可能需要检查下权限。

剩下的就是写另外2个方法:评论发生变动后更新和删除文章后清除缓存。

这里就直接贴所有代码了,相信你也能看懂(我都看得懂你敢说看不懂???)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

00:00/00:00