WordPress使用上的出错对应,借用好方法等的归纳总结。
Good Cases
ChromeNews主题
主题模版的宽度变更
查看CSS文件,找到了定义宽度的地方,然后把它改了过来。
$ cd /var/www/html/wp-content/themes/chromenews
$ sudo cp -p style.css{,.orgi}
$ sudo vim style.css
$ diff style.css.orin style.css
1177c1177
< width: 66.66%;
---
> width: 75.00%;
1181c1181
< width: 33.33%;
---
> width: 25.00%;
$ sed -n "1176,1185p" style.css
.container-wrapper #primary {
width: 75.00%;
padding-right: 10px;
}
.container-wrapper #secondary {
width: 25.00%;
padding-left: 10px;
}
Twenty Twenty Two主题
试用WordPress的默认主题(Theme)Twenty Twenty Two的时候, 它的模版的宽度比较窄,根据这篇文章 WordPress5.9 新デフォルトテーマ Twenty Twenty-Two と フルサイト編集(FSE) をチェックしています 的分析,写Blog部分的Content是650px,我把它改成了850px。
$ cd /var/www/html
$ find . -name theme.json
$ cd wp-content/themes/twentytwentytwo
$ sudo cp -p theme.json{,.orig}
$ sudo vim theme.json
$ diff theme.json.orig theme.json
204c204
< "contentSize": "650px",
---
> "contentSize": "850px",
自动写目录插件
参考一下文章,安装了自动写目录的插件。
【Easy Table of Contents】WordPressの記事内に目次を自動挿入する方法
TroubleShooting
Contact Form不能发送邮件
原因很明确,因为安装了WordPress的EC2没有开通对外的SMTP端口。
我是看了这篇文章 20分でできる!【WordPressブログ】お問い合わせフォームの作り方 后设置好了Contact Form的,多谢了!
上面这篇文章介绍的form,但是正如 [AWS] EC2からSES経由でメール送信する 上写的,AWS没有允许我解除沙箱的限制,所以我不能从EC2通过SES发送自己邮箱以外的邮件(在沙箱环境下,自能发送给已经Verified过的作为Sender的邮件。就是说自己发给自己)。
Contact Form 7有一个很特别的限制条件,就是设置的From(Sender)的邮箱域名必须跟网站的域名一致。这就造成了一个问题,就是我在没有接触沙箱限制之前不能使用它。所以我先把它给Deactivate,然后把Contact的菜单先下单了再说。
TBD:安装 MW WP Form 试试。
予約投稿失敗
公开的时候、也没有预约公开但不知道为什么会显示「予約投稿失敗」的错误,不能成功地公开。在网上查询,进行了以下两个更改之后搞好了。
更改时区
WordPress设置的时区默认是UTC(协调世界时),而日本是JST(UTC+9)。所以在首先在「设定」的「一般」的时区选项里,把时区设置为「东京」。
如果再有发生显示预约投稿预约失败之类错误的话,可以尝试执行以下命令:
$ sudo yum reinstall tzdata
$ sudo systemctl restart httpd
设定代替CRON
我的情况是更改了时区后(包括后台的EC2),预约投稿失败的出错还存在。所以参考了 WordPressの予約投稿に失敗する原因と見るべき重要ポイントのまとめ!后,终于改好了。也就是说,在WordPress的文件wp-cron.php的开头里加了一行。
$ sudo vim /var/www/html/wp-cron.php
define('ALTERNATE_WP_CRON', true);
改完过了一阵时间后问题解决了。
MariaDB宕机(Down机)对策
在运用过程中,原因不明的mariadb宕机时有出现。以下是一个很原始的对应方法(自己20年前使用的手法)。写一个叫self_check.sh
的脚本, 每10分钟cron
执行一次。
#!/usr/bin/env bash
#set -x
while true
do
ret=`systemctl status mariadb | grep "active (running)"`
if [ $? -ne 0 ]; then
sudo systemctl restart mariadb
else
break
fi
done
然后,设置cron
SHELL=/usr/bin/bash
PATH=~/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
MAILTO=[email protected]
# Mariadb self_check
*/10 * * * * /home/ec2-user/bin/self_check.sh > /dev/null 2>&1
搞掂。