在WordPress站点中本地部署MathJax以显示数学公式并增加对Markdown语法的支持

操作环境

服务器操作系统:Linux (出于安全考虑,不注明具体版本)
Web应用:WordPress (出于安全考虑,不注明具体版本)

背景说明

如果网站以二级域名的形式挂靠在 wordpress.com 上面,则默认就支持插入数学公式,插入的数学公式经过渲染之后会以图片的方式显示在前台页面。但是,如果网站是使用 WordPress 程序自己部署的,默认就没有渲染数学公式的功能。这个时候,我们可以选择安装相关插件达到插入以及显示数学公式的目的,我之前就是使用一款插件来显示数学公式的。但是,我后来发现这个插件已经很长时间不更新了,使用长期不更新的插件不仅会产生兼容性问题,还会带来安全隐患,因此,我决定不再使用插件而是使用 MathJax 渲染数学公式。

MathJax 是一个用 JavaScript 编写的工具,能够将 MathML, TeX, 或者 ASCIImath 格式的输入信息渲染成 HTML+CSS, SVG, 或者 MathML 格式的输出。也就是说,MathJax 可以把 TeX 语法渲染成能够在 Web 前端显示的格式,因此,我们可以使用 MathJax 在 WordPress 站点中渲染并显示数学公式。从 MathJax 官网提供的信息我们可以看到,MathJax 并没有提到可以支持 Markdown 语法,不过,由于我写数学公式通常都是使用的 Markdown 语法,因此,本文中还会介绍如何让 MathJax 支持 Markdown 语法,从而实现使用 Markdown 语法编写的数学公式直接复制到 WordPress 编辑器中就可以直接显示在前端页面。

MathJax 可以下载下来在本地部署,也可以直接使用 MathJax 提供的 CDN 部署,由于 MathJax 是在客户端运行的,因此,通常情况下,添加 MathJax 并不会为站点带来特别严重的安全隐患。

继续阅读“在WordPress站点中本地部署MathJax以显示数学公式并增加对Markdown语法的支持”

WordPress开发:add_filter和apply_filters过滤器钩子

1 操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:    bionic

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

2 本文概要

本文主要介绍 WprdPress 平台中提供的两个过滤器钩子:

  • add_filter
  • apply_filters

简单地说,add_filter 是添加过滤器钩子的函数(过滤器添加钩子),而 apply_filters 是应用过滤器钩子的函数(过滤器应用钩子)。

为了辅助理解,本文中还会展示一些关于这两个过滤器钩子的使用样例。

继续阅读“WordPress开发:add_filter和apply_filters过滤器钩子”

WordPress开发:实现过滤包含恶意代码的危险评论的插件

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:    bionic

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

需求分析

运行在公网中的 WordPress 站点极易遭受 SQL 注入攻击以及 XSS 跨站脚本攻击等。即便是一个不开放用户注册功能的个人博客,也存在攻击切入点,例如评论框。目前版本的 WordPress (WordPress 5.3.2) 本身并不会把可能包含恶意代码的评论删除,在 WordPress 没有被暴露出漏洞的时候,这么做可能并没有什么问题,但是一旦被发现存在漏洞,那么允许包含恶意代码的数据存入数据库就会变得很危险。因此,我的需求就是,一旦评论中被检测到存在可能的恶意代码,就要把该评论删除,同时,用一条表达警示信息的预置标准评论代替该评论,从而使得任何可能包含恶意代码的评论都不被写入数据库,最大程度地防范 SQL 注入攻击和 XSS 跨站脚本攻击等。

继续阅读“WordPress开发:实现过滤包含恶意代码的危险评论的插件”

WordPress开发:WordPress插件的时区设置及样例

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

继续阅读“WordPress开发:WordPress插件的时区设置及样例”

WordPress开发:WordPress动作钩子add_action参数解析

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

add_action 函数使用形式

<?php add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 ); ?>
继续阅读“WordPress开发:WordPress动作钩子add_action参数解析”

WordPress开发:一个动作钩子可以挂载多个动作,以wp_footer钩子为例

操作背景

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

准备工作

在「荒原之梦」之前文章《WordPress开发:WordPress动作钩子之add_action和do_action使用样例》中,提到了 add_actiondo_action 两个动作钩子,以及 WordPress 页脚钩子 wp_footer, 本文将在《WordPress开发:WordPress动作钩子之add_action和do_action使用样例》这篇文章的基础上,通过补充一些代码的方式,说明在一个动作钩子上挂载多个动作的实现方式。

继续阅读“WordPress开发:一个动作钩子可以挂载多个动作,以wp_footer钩子为例”

WordPress开发:WordPress动作钩子之add_action和do_action使用样例

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

需求分析

在本文的样例中,我们需要实现一个在 WordPress 页脚添加联系信息的插件。具体要求如下:

  • 插件启动时将硬编码进插件代码中的联系信息(一个邮箱地址)写入数据库;
  • 之后,从数据库中取出该联系信息,显示到 WordPress 页脚的位置;
  • 插件卸载时能够自动清除之前写入到数据库中的数据。
继续阅读“WordPress开发:WordPress动作钩子之add_action和do_action使用样例”

WordPress插件开发:实现插件的注册,注销和卸载

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由WordPress团队开发)

继续阅读“WordPress插件开发:实现插件的注册,注销和卸载”

通过插入断点显示WordPress当前已激活的插件

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:
主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由 WordPress 团队开发)

下面的内容涉及 WordPress 文件调用顺序的问题,关于这部分内容可以参考「荒原之梦」的这篇文章:

WordPress文件调用加载顺序(含矢量示意图)

继续阅读“通过插入断点显示WordPress当前已激活的插件”

WordPress文件调用加载顺序(含矢量示意图)

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:

主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由 WordPress 团队开发)

继续阅读“WordPress文件调用加载顺序(含矢量示意图)”

WordPress开发必备:WordPress5.3.*函数大全[6/6]

说明

【WordPress5.3.*函数大全系列】包含 WordPress 在其开发者资源网公布的 WordPress 5.3. 的全部函数,一共 1470 个。

由于将这些内容全部放在一篇文章中会超出 WordPress 的限制,也会在加载过程中对【荒原之梦】的数据库造成产生较大的负荷,因此,我将这 1470 个函数分列到了 6 篇文章中,如下:

WordPress开发必备:WordPress5.3.*函数大全[1/6]
WordPress开发必备:WordPress5.3.*函数大全[2/6]
WordPress开发必备:WordPress5.3.*函数大全[3/6]
WordPress开发必备:WordPress5.3.*函数大全[4/6]
WordPress开发必备:WordPress5.3.*函数大全[5/6]
WordPress开发必备:WordPress5.3.*函数大全[6/6]

您也可以在我的 GitHub 上找到【WordPress开发必备:WordPress5.3.*函数大全】等 WordPress 开发资料:

https://github.com/zhaokaifengcom/wordpress-develop

本文中的函数对应于 WordPress 5.3.* 版主程序,此前及此后的版本中一些常用函数的变化通常不会太大,也可以参考本系列文章列出的函数。

继续阅读“WordPress开发必备:WordPress5.3.*函数大全[6/6]”

WordPress开发必备:WordPress5.3.*函数大全[5/6]

说明

【WordPress5.3.*函数大全系列】包含 WordPress 在其开发者资源网公布的 WordPress 5.3. 的全部函数,一共 1470 个。

由于将这些内容全部放在一篇文章中会超出 WordPress 的限制,也会在加载过程中对【荒原之梦】的数据库造成产生较大的负荷,因此,我将这 1470 个函数分列到了 6 篇文章中,如下:

WordPress开发必备:WordPress5.3.*函数大全[1/6]
WordPress开发必备:WordPress5.3.*函数大全[2/6]
WordPress开发必备:WordPress5.3.*函数大全[3/6]
WordPress开发必备:WordPress5.3.*函数大全[4/6]
WordPress开发必备:WordPress5.3.*函数大全[5/6]
WordPress开发必备:WordPress5.3.*函数大全[6/6]

您也可以在我的 GitHub 上找到【WordPress开发必备:WordPress5.3.*函数大全】等 WordPress 开发资料:

https://github.com/zhaokaifengcom/wordpress-develop

本文中的函数对应于 WordPress 5.3.* 版主程序,此前及此后的版本中一些常用函数的变化通常不会太大,也可以参考本系列文章列出的函数。

继续阅读“WordPress开发必备:WordPress5.3.*函数大全[5/6]”

WordPress开发必备:WordPress5.3.*函数大全[4/6]

说明

【WordPress5.3.*函数大全系列】包含 WordPress 在其开发者资源网公布的 WordPress 5.3. 的全部函数,一共 1470 个。

由于将这些内容全部放在一篇文章中会超出 WordPress 的限制,也会在加载过程中对【荒原之梦】的数据库造成产生较大的负荷,因此,我将这 1470 个函数分列到了 6 篇文章中,如下:

WordPress开发必备:WordPress5.3.*函数大全[1/6]
WordPress开发必备:WordPress5.3.*函数大全[2/6]
WordPress开发必备:WordPress5.3.*函数大全[3/6]
WordPress开发必备:WordPress5.3.*函数大全[4/6]
WordPress开发必备:WordPress5.3.*函数大全[5/6]
WordPress开发必备:WordPress5.3.*函数大全[6/6]

您也可以在我的 GitHub 上找到【WordPress开发必备:WordPress5.3.*函数大全】等 WordPress 开发资料:

https://github.com/zhaokaifengcom/wordpress-develop

本文中的函数对应于 WordPress 5.3.* 版主程序,此前及此后的版本中一些常用函数的变化通常不会太大,也可以参考本系列文章列出的函数。

继续阅读“WordPress开发必备:WordPress5.3.*函数大全[4/6]”

WordPress开发必备:WordPress5.3.*函数大全[3/6]

说明

【WordPress5.3.*函数大全系列】包含 WordPress 在其开发者资源网公布的 WordPress 5.3. 的全部函数,一共 1470 个。

由于将这些内容全部放在一篇文章中会超出 WordPress 的限制,也会在加载过程中对【荒原之梦】的数据库造成产生较大的负荷,因此,我将这 1470 个函数分列到了 6 篇文章中,如下:

WordPress开发必备:WordPress5.3.*函数大全[1/6]
WordPress开发必备:WordPress5.3.*函数大全[2/6]
WordPress开发必备:WordPress5.3.*函数大全[3/6]
WordPress开发必备:WordPress5.3.*函数大全[4/6]
WordPress开发必备:WordPress5.3.*函数大全[5/6]
WordPress开发必备:WordPress5.3.*函数大全[6/6]

您也可以在我的 GitHub 上找到【WordPress开发必备:WordPress5.3.*函数大全】等 WordPress 开发资料:

https://github.com/zhaokaifengcom/wordpress-develop

本文中的函数对应于 WordPress 5.3.* 版主程序,此前及此后的版本中一些常用函数的变化通常不会太大,也可以参考本系列文章列出的函数。

继续阅读“WordPress开发必备:WordPress5.3.*函数大全[3/6]”

WordPress开发必备:WordPress5.3.*函数大全[2/6]

说明

【WordPress5.3.*函数大全系列】包含 WordPress 在其开发者资源网公布的 WordPress 5.3. 的全部函数,一共 1470 个。

由于将这些内容全部放在一篇文章中会超出 WordPress 的限制,也会在加载过程中对【荒原之梦】的数据库造成产生较大的负荷,因此,我将这 1470 个函数分列到了 6 篇文章中,如下:

WordPress开发必备:WordPress5.3.*函数大全[1/6]
WordPress开发必备:WordPress5.3.*函数大全[2/6]
WordPress开发必备:WordPress5.3.*函数大全[3/6]
WordPress开发必备:WordPress5.3.*函数大全[4/6]
WordPress开发必备:WordPress5.3.*函数大全[5/6]
WordPress开发必备:WordPress5.3.*函数大全[6/6]

您也可以在我的 GitHub 上找到【WordPress开发必备:WordPress5.3.*函数大全】等 WordPress 开发资料:

https://github.com/zhaokaifengcom/wordpress-develop

本文中的函数对应于 WordPress 5.3.* 版主程序,此前及此后的版本中一些常用函数的变化通常不会太大,也可以参考本系列文章列出的函数。

继续阅读“WordPress开发必备:WordPress5.3.*函数大全[2/6]”