阿里云从ubuntu16.04.5升级到ubuntu 18.04.3后调整PHP 7.0到PHP 7.2

目前使用的阿里云服务器是通过参考 阿里云ECS ubuntu 14.04.5 LTS升级到ubuntu 16.04.2 LTS 升级上来的。

升级之后,默认情况下,依旧使用的是 ubuntu 16.04.5 自带的 PHP 7.0 ,然而 ubuntu 18.04.3 系统自带的是 PHP 7.2 。我们希望在升级之后的系统上,能启用比较新版本的 PHP 7.2

其实更关键的是,在 ubuntu 18.04.3 系统上, PHP 7.0 相关的部分附加组件,比如 PHP7.0-CURL 已经没办法通过源安装了 ,安全补丁相关的更新估计也不能及时提供。另外就是较新版本的 PHP 7.2 在性能上有不错的提升。

执行如下切换命令(PHP-FPM模式):

网站响应速度有明显的提升,以前的卡顿表现明显改善。

参考链接


代码实现WordPress评论回复自动发邮件的功能

评论邮件通知的方法:

对于服务器上需要使用SMTP验证的,需要使用PHPMailer替代默认的WordPress默认的Mail发送邮件时配置SMTP相关信息,如下:

注意,目前测试在WordPress 5.8版本,上述的代码会诱发异常

解决方法为注释掉函数的类型(PHPMailer)声明,如下:

1.所有回复都发送邮件通知

登陆博客后台,点击“外观”选项卡下的“编辑”选项进入主题编辑界面,在functions.php文件中的<?php和?>之间添加以下函数即可:

2.让访客自己选择是否邮件通知

在functions.php文件中的<?php和?>之间添加以下函数,该函数将会在评论框底部生成要不要收回复通知的选项(与主题有关)

3.让博客管理员决定什么情况下发邮件

继续阅读代码实现WordPress评论回复自动发邮件的功能

关于WordPress中提示has_cap的问题

WordPress 中不同用户等级拥有不同的操作权限,这给我们的网站安全提供了很大的保障。在 WordPress 2.0 以前,WP 插件中使用数字(用户等级)来标识不同的权限级别。这显然让程序的可阅读性大打折扣。所以从 WordPress 2.0 开始就启用了新的权限标识符号,使用有具体含义的英文字符串,同时保留原来的那一套表示方法。很多插件作者并没有采用新的权限表示方式,因而在开启 WordPress 的调试模式后,用户会看到警告。

>英文版本的警告类似于,

为了安全,上面的语句中隐去了绝对路径而代之以省略号。

中文版本的警告类似于,

可以看到,只是“不建议”,并不是完全不能用了。

要解决这个问题,只需要将插件(也许还包括某些主题)中用到的权限声明的表示方式替换为新的方式就可以了。

1. 定位需要改写的语句

首先要定位到需要改写的语句,这是个比较麻烦的任务。

从上面的警告信息中并不能直接知道是哪个文件调用了 functions.php 中的 has_cap 函数。所以这里只是给个思路,无法给出明确的方法。

对于插件,一般是因为插件需要在 WordPress 的管理后台创建插件的设置页面时进行权限声明的。比如在 WordPress Revision 插件中遇到的情况就是这样。出现这种情况的标志性语句是,

只要在插件源文件中搜索 add_options_page 关键词即可定位。

如果不是这种情况,那就可以挨个儿禁用 WP 中的插件,同时刷新页面以确定是否是当前插件造成的。如果恰好发现该警告信息不再提示了,就说明是当前的插件。然后在该插件的源文件中去找相关的语句。

另外,还可以通过在 WP 后台中操作时出现错误提示的路径信息来缩小检查范围。如果有什么需要,可以留言咨询。

2. 改写表达方式

如果定位到了出问题的 PHP 语句,改写表达方式就很简单了。下面一节介绍了 WordPress 中新旧角色权限表达方式的对比。只需要将原来的表示用户级别的数字改成新的表示权限的字符串就可以了。

例如,原来的 PHP 语句为,

该语句因为要在 WordPress 后台添加一个插件的“选项”页面,因而需要用到 WordPress 中的第 8 级权限。查到对应的新的权限字符串为 'manage_options'。对应修改为,

只需要改其中那个数字 8,别的不需要动。

应该注意的是,根据 PHP 的规则,传递的参数如果是整型数字,可以不用加单引号,但是改成字符串之后,我们需要用英文半角的单引号将该字符串包起来。

3. 新旧权限表示方式对照

WordPress Codex 中有关于旧版本数字式用户级别和新的字符串式权限声明的详细说明可供参考。

在数字式用户级别页面的 3.12 User Level Capability Table 表格中列出了 11 个用户级别对应的权限。而在字符串式权限声明页面中 3.8 Capability vs. Role Table 一节里列举了所有权限字符串所代表的权限级别(对应于超级管理员、管理员等)。

原先的数字式级别与新的字符串式权限之间并不是一一对应的。具体应该将数字换成哪个字符串需要仔细斟酌。可能还需要根据在本文第 1 小节中定位出的 PHP 语句来辅助判断。原则上,权限在够用的前提下越小越好

例如,前面的例子中需要增加 options 页面,那肯定是管理员级别的权限。增加 options 页面的目的就是保存该插件的设置信息,这些信息是需要写入到 WordPress 数据库的 options 表中的。所以,可以确定为 manage_options 这个字符串。

在 Capabilities 一节中详细解释了各个字符串所代表的操作权限的范围。而在 User Levels 一节中则给出了旧式数字用户等级所对应的权限范围,方便缩小查找权限字符串的范围。8-10 级对应于管理员,3-7 级对应于编辑,2 级是作者,1 级是贡献者,0 级是权限最低的订阅者。

参考链接


关于 WP 中提示 has_cap 的问题

WordPress插件的语言国际化

调试的时候,通过在 wp-config.php 中定义 define('WPLANG', 'zh_CN');  来切换语言类型。

参考链接


Gettext po文件编辑器

Gettext 是一个非常老牌和成熟的国际化和本地化解决方案,在 Linux 下几乎每个 GNU 程序中都能见到 Gettext 的身影。在 Gettext 中,每个 locale 对应一个 po 文件,虽说 po 文件是纯文本,但是如果用普通的文本编辑器来编辑是非常麻烦的。

正好这两天国际化 ,搜到了几个 Linux 下的 po 编辑器~,推荐 GtranslatorWordPress 翻译( i18n )的时候使用这些工具。

macOS 下安装如下命令:


继续阅读Gettext po文件编辑器

WordPress文章内容加上TTS语音朗读

浏览一些博客的时候是否有看到过在内容上面有可以选择语音朗读功能,看着感觉还是蛮炫酷的。尤其是移动端的网站阅读体验比较好,比如一些内容教程、小说类型的网站可以使用这样的功能。

这里我们一般是使用的是百度提供的TTS(Text To Speech)文本到语音功能。

如下是实现这个基本功能的插件实现的代码。如下:

这里我们将代码添加到WordPressplugins目录下的SpeakIt目录下。

里面有两个按钮play.png,pause.png,需要存放到SpeakIt插件的images目录下:

 

 

参考链接


ubuntu 16.04安装配置WordPress 5.3.2并建立PHP调试环境

WordPress配置文件


继续阅读ubuntu 16.04安装配置WordPress 5.3.2并建立PHP调试环境

html数学公式显示库MathJax的使用

MathJax是一个开源的web数学公式渲染器,由JS编写而成。MathJax允许你在你的网页中包含公式,无论是使用LaTeX、MathML或者AsciiMath符号,这些公式都会被javascript处理为HTML、SVG或者MathML符号。

引入CDN

只需要在头部添加下面这句,就可以成功引入CDN

内联config说明

官方提供了一个能让我们内联一个配置选项的功能,要想让这个内联配置生效就得放在
CDN引入之前。如下

MathJax 2.x 跟 MathJax 3.x 的配置信息是不同的,这部分的配置转换可以通过MathJax-demos-web中的v2 to v3 Configuration Converter

上面的配置信息,转换后的结果如下:

其中MathJax.Hub.Config()里的配置选项是重点,本例表示用来识别行内公式,$来识别行间公式。

书写公式

对应的公式在html文件中写法如下

显示效果

WordPress上实现上述功能,最简单的方式是安装 Simple Mathjax 插件即可。

注意目前(2022/03/16)的 MathJax 3.x 还不支持多语言,不支持公式自动换行(automatic line breaking)

参考链接


解决WordPress 5.2.3/5.7.2后台ICP备案链接不能跳转到工信部网站(www.miitbeian.gov.cn)的问题

正常情况下,通过简单设置,WordPress 可以实现网站底部的链接地址跳转到工信部的备案网站。

具体配置方式参考 Wodpress主题底部显示当前网站备案号

但是最近突然发现这个网址不能访问了。

网上查询了一下,才发现这个网址被更改了,从 "http://www.miitbeian.gov.cn/" 修改成了"https://beian.miit.gov.cn/",因此需要调整网站上的代码。

具体修改参考如下:

需要修改的函数如下:

注意:

设置的域名不能是 http://www.beian.miit.gov.cn/ 或者 https://www.beian.miit.gov.cn/ 。目前测试发现,上面的两个域名都返回解析错误。

只能配置为"https://beian.miit.gov.cn/"

参考链接


WordPress无法正常显示空行/回行/回车/换行的解决方法

在WordPress后台编辑文章的时候,明明有按ENTER空行,但是发表后发现空行完全不见了。

自从使用上WP之后,这个问题一直无法得到解决,一直怀疑Wordpress的编辑器不太好用。 有时候在“可视化”模式下写完文章用“HTML”模式看一下,再切换回“可视化”结果就变了。

而且经常有时候写文章想分段空一个空白行出来。必须切换到“HTML”模式中用 <br /> 来实现这个目的。关键是反复几次切换之后,手工添加的 <br /> 的也会莫名其秒的丢失。

这个是由于WordPress的 “自动省略或删除空白行” 导致的。

如果安装了 TinyMCE Advanced 可以在下面选项处关闭这个功能,如下图:

继续阅读WordPress无法正常显示空行/回行/回车/换行的解决方法