解决WordPress 5.7.2某些插件报错“Uncaught TypeError: Cannot read property 'msie' of undefined”

升级到 WordPress 5.7.2 之后某些插件报错

导致无法运行,原因为

而新版本的 WordPress 5.7.2 使用的是 jQuery 3.5 因此上述异常就不足为奇了。

解决方法为在 WordPress 5.7.2 相关主题下,新增如下兼容脚本:

接着需要在主题的 footer.php 中增加引用,如下:

完整的 footer.php ,参考内容如下:

参考链接


取消WordPress中h5/h6/h7英文强制大写

在使用WordPress写文章的时候,如果使用H5及以下字体,英文字母会被强制转换成大写,导致布局非常难看。

解决方法是通过覆盖默认的 text-transform属性,如下:

参考链接


WordPress主题Twenty Sixteen错误解决

Error 'Character set '#255' is not a compiled ch aracter set and is not specified in the '/usr/local/mariadb10/share/mysql/charse ts/Index.xml' file' on query. Default database: 'wordpress'. Query: 'BEGIN'

以前通过 家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步 配置之后,群晖自带的 MariaDB 10.3.21 可以非常流畅的与服务器上的 MySQL 7.x 版本进行主从同步。

前两天系统从 ubuntu 18.04 升级到 ubuntu 20.04 (MySQL 8.x)之后,发现已经无法进行主从同步。

报告如下错误:

网上查询很久,找到原因 MySQL 8.016 master with MariaDB 10.2 slave on AWS RDS, Character set '#255' is not a compiled character set

This could be a serious problem when replicating between MySQL 8.0 and MariaDB 10.x.

The default (for good technical reasons) COLLATION for the 8.0 is utf8mb4_0900_ai_ci. Note the "255" associated with it. MariaDB has not yet adopted the Unicode 9.0 collations.

Furthermore, Oracle (MySQL 8.0) did a major rewrite of the collation code, thereby possibly making collation tables incompatible.

probable fix is to switch to the next best general-purpose collation, utf8mb4_unicode_520_ci (246) (based on Unicode 5.20). This would require ALTERing all the columns' collations. ALTER TABLE .. CONVERT TO .. might be the fastest way. Those could be generated via a SELECT .. information_schema.tables ....

大致原因就是MySql 8.0默认使用了最新的utf8mb4_0900_ai_ci字符集,然而MariaDB 10.3.x版本不支持这个字符集,导致无法同步。

8.0.17:

MariaDB 10.2.30:

目前暂时没打算修改主服务器上的数据库,暂时等 MariaDB 更新吧。

参考链接


代码高亮插件Crayon Syntax Highlighter在PHP7.4报错解决办法

在新版的WordPress中,系统已经多次提示升级PHP,考虑到新版本更高效更安全,所以决定升级。

可是,升级完成后,网站出现大量报错,报错信息如下:

继续阅读代码高亮插件Crayon Syntax Highlighter在PHP7.4报错解决办法

ubuntu 18.04完整安装配置WordPress 5.5.3并调优

WordPress配置文件

启用Apache2cache,expire,gzip模块,加强服务器性能

PHP-FPM进程数的设定,提高响应速度,解决页面加载时候缓慢的问题(如果感觉打开页面缓慢,建议调整下面的配置,这种情况尤其在访问量不大的时候会出现短暂的耗时增大,原因就是php进程被临时创建导致延迟增大

启用PHP7的opcache配置

重启服务

参考链接


WP Statistics插件在开启缓存功能后无法统计访问量

WP Statistics插件在开启缓存功能后无法统计访问量。

跟踪发现统计访问量使用的url返回401错误,如下:

比较奇怪的是,如果此时用户登陆,那么反倒不返回任何错误了。

继续阅读WP Statistics插件在开启缓存功能后无法统计访问量

WordPress隐藏前台登录用户名

最近在查看Limit Login Attempts日志的时候,发现大量的登陆尝试,关键是登陆使用的用户名是正确的。感到很奇怪,用户名是如何泄漏的呢?

网上搜寻了一下,发现原来用户名是被WordPress主动泄漏出来的。

WordPress鼠标点击前台用户名,浏览器就会跳转到 https://www.mobibrw.com/author/username 这个链接,这样一来就直接暴露了登陆用户名,哪怕你已经在前台使用了昵称。这是个很大的安全隐患!

后台登陆用户名也可以这样查看到:https://www.mobibrw.com/?author=1,多用户的可以把 1 变为 2、3、4、5 等,就可以在地址栏查看到各个用户名。

为了避免暴露登陆用户名,我们需要配置禁止用户名显示。我们需要在当前使用的主题的functions.php中增加如下函数

参考链接


WordPress中判断用户是不是管理员

自定义WordPress插件的时候,需要判断当前用户的角色是不是网站管理员,如果是管理员的情况下才允许使用插件功能,否则禁止使用。

对于自定义主题的情况,可以使用如下代码:

对于自定义插件的情况,可以使用如下代码:

更简单的代码如下:

参考连接


Synology(群晖)常见的配置项以及命令项

Apache2.2 相关配置与常见命令

Apache2.4 相关配置与常见命令

Nginx 相关配置与常见命令

Web Station 相关配置与常见命令

继续阅读Synology(群晖)常见的配置项以及命令项

WordPress修改数据库返回数据

有个简单需求,就是 WordPress 多个网站同步数据的情况下,根据网站域名的不同,修改数据库返回的数据。

实现这个的需求就是在当前 WordPress 主题下的 functions.php 中实现 the_post 拦截函数,在数据库返回的数之后,进行替换。

例子如下:

这个替换过程只能针对没有使用 WP Super Cache 进行缓存的情况,如果已经使用 WP Super Cache 进行缓存,那么很可能导致没有及时生效。

如果只是需要替换域名,那么只需要在 wp-config.php 中定义 WP_HOME/WP_SITEURL 两个变量即可实现域名覆盖。

示例参考代码如下:

参考链接