显示标签为“建站”的博文。显示所有博文
显示标签为“建站”的博文。显示所有博文

2025年3月5日星期三

WordPress备份的内容及方法

为了防止意外发生,需要定期备份WordPress的数据,以下是我根据自己的需要整理的备份内容及方法:

1. 备份数据库

  • 使用插件:如Database Backup for WordPress插件,可自动备份数据库到电子邮箱。(频率:每周一次,自动)
  • 数据库操作:通过phpMyAdmin导出数据库文件。(频率:每年一次,手动)

2. 备份文章

  • 备份到博客托管平台:WordPress后台导出xml文件,然后导入到WordPress.com或者Blogger。(频率:每年一次,手动)
  • 电子邮件备份:使用电子邮件订阅博客服务(如follow.it),每次更新文章时,将会收到邮件。(频率:每次发布文章一次,自动)

3. 备份文件

  • 主题文件:备份wp-content/themes目录。
  • wp-config.php:包含数据库连接信息等重要配置。
  • .htaccess:用于URL重写等服务器配置。
  • robots.txt:搜索引擎规则。
  • favicon.ico:网站图标。
  • 上传文件:备份wp-content/uploads目录。因为我的图片全部是外链,不需要备份这个文件夹。
  • 手动备份:通过FTP或文件管理器下载文件。
  • 频率:每次修改后立即备份。

4. 备份外链图片

  • 查找包含图片的文章
    SELECT ID, post_title,guid FROM wp_posts WHERE post_type = 'post' AND post_content LIKE '%<img%';
  • 查找包含2张及以上图片的文章
    SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'post' AND (LENGTH(post_content) - LENGTH(REPLACE(post_content, '<img', ''))) / LENGTH('<img') >= 2;
  • 备份方法:手动将文章复制粘贴到国内各大平台,如微信号、知乎、豆瓣、头条号等,这些平台会自动将外链图片上传到自身的服务器。
  • 频率:不定期备份。

2024年12月18日星期三

第一次卖域名

12月9日注册新域名,12月10日下午在阿里云发布一口价域名(临近下班才通过域名所有权的认证),12月11日上午11点阿里云短信通知我发布的域名已被人下单,域名卖出的速度之快令人咋舌。

知道域名被人买了,我是又喜又忧,喜的是原本到期不再续费的旧域名很快被人买走,忧的是旧域名做301重定向才不到两天,这么短的时间旧网址的权重还没有传递到新网址上。

根据规则,我需要在10日内将旧域名转入阿里云,否则将受到50元保证金的罚款。我一直拖到第八天才进行域名转入操作。Namesilo的域名转出很方便,而且提供快速转出功能,十几分钟就把域名转入到阿里云了。转入到阿里云后,域名很快就自动转移给了对方。

这次在阿里云卖域名,体验很好,操作简单,唯一的遗憾是卖的太快觉得有点卖亏了。因为第一次卖域名,也不知道卖多少钱合适,想着先标个700元的价钱(阿里云收15%的服务费,实际是805元),我觉得已经很高了,到时候没人买再降价。而且没有考虑到转入域名需要续费一年的问题,又掏了80元的续费费,最终实收620元。

这个域名是2015年5月5日注册,到2027年5月5日到期,总共续费了12年,620元还不够这些年域名续费的费用,不过这也是博客目前最大的一笔收入了。

前几年Jasmine问我,博客的文章都没什么人看为什么还要写?后来又得知这十几年在博客上花了一千多块了,更加不支持了。我和她说,这是我唯一的爱好了,和抽烟喝酒比起来既省钱又健康。

到目前为止,我用过5个域名,2个免费的3个收费的。免费的是TK和NET.RU,用的时间都很短,加起来才3个月。第一个收费的域名是INFO,从2010年到2015年。最长的是上一个COM域名,从2015到2024年。

2024年12月10日星期二

静风说更换域名及网址301重定向

一、 为什么要换域名

目前这个域名用了快十年了,域名注册的时间看起来还挺有意义,是2015年5月5日。当时移动端还没有兴起,我的大部分网上冲浪的时间是在电脑端,于是注册了一个三拼(三个全拼的汉语拼音)的域名,用电脑的键盘输起来很顺手(当时对域名的要求就是没有数字和下划线)。后来移动端越来越发达,手机使用的时间也越来越长,电脑使用得越来越少。这时在手机上输入博客的网址,显得很不方便,12个字母总是输错,输起来也着急。于是就萌生了把博客换成更短的域名。

思来想去,最终确定了jfsay.com这个域名,因为jfsay和博客的名称「静风说」相对应。Jasmine看到后说,为什么不用jfs.com,更短更好记。我笑说,这个我们买不起。

在输入jfsay时,发现输入法默认出来的结果是「减肥少熬夜」,竟然是劝人注重健康的,也合我意。

二、 购买域名

jfsay.com这个域名被人注册了,这几天突然看到可以注册,于是和Jasmine商量后,决定购买了。我找了好多家域名注册商对比价格,最后发现Spaceship 最便宜,5.87美元,折合人民币是42.73元。

三、 主机空间绑定新域名

域名解析很容易,添加一条A记录到主机的IP地址就可以了。主机空间绑定新域名时,却遇到了问题,提示无法绑定新的域名。问了主机商才知道,我是入门型的套餐,只能绑定一个域名。我只好把主机空间的域名改成新域名。很快,新的域名可以正常访问博客了。

四、老域名301重定向到新域名

下面要做的是把老域名301重定向到新域名,在这个地方我花了好多时间。

我原以为旧域名A记录到主机的IP,或者301重定向到新域名就可以了。后来发现需要做域名绑定,把域名和空间对应起来。主机商给我的解决方案是,需要升级套餐然后绑定多个域名,其余一概不管。我心想,只是为了网址跳转去掏钱升级主机空间太不划算。何不申请个免费的虚拟主机,只做301重定向?

免费的虚拟主机很多,随便就申请了下来。绑定域名,.htaccess重定向,很快就做好了。原以为大功告成,没想到https 的网址会提示网址不安全。也就是http的网址可以正常跳转,https的网址会卡在那里不动。

这个免费的虚拟主机没有免费的SSL,却有个SSL/TLS证书配置页面。我心想,申请一个免费SSL证书不就行了吗。我试了好几家免费证书提供商,总是在域名确认的时候出错,无法确认域名。最后在腾讯云上申请下来了。但是这个虚拟主机没有证书上传和部署的地方,查了好久也解决不了。

既然SSL证书解决不了,我想着是否能把https的网址跳转到http呢?上网查了下,都是http的网址跳转到https的,后来才知道https的网址跳转到http技术上行不通。只好作罢。

就在我一筹莫展的时候,我找到了redirhub.com,一个专门做网址跳转的网站,而且支持HTTPS。我用了十几分钟,跟着网站的步骤提示,很快就做好了301网址重定向,完美解决了https网址跳转的问题。

遥想当年,我在2015年更换域名的时候就没有这么麻烦,因为那时主机空间可以绑定多个域名,直接在.htaccess做301重定向就行了。

麻烦各位看官及时惠存新的网址,更换RSS订阅地址。

新的网址:http://www.jfsay.com/
新的RSS地址:https://www.jfsay.com/feed

2023年10月16日星期一

WordPress作者评论的名称后面添加「作者」的文本标识

标题比较拗口,举例说明如下:假如作者名称是ABC,默认的作者评论是ABC说:ZZZ。想要实现的效果是ABC(作者)说:ZZZ。也就是在作者的名称后面加了「作者」的提示,这样当评论比较多时可以很快发现哪条是作者的评论。

下面是网上的找来的实现方法,我做了一点修改,只需将代码放到主题的模板函数文件里 (functions.php)就行了。

if ( ! class_exists( 'WPB_Comment_Author_Role_Label' ) ) :class WPB_Comment_Author_Role_Label {public function __construct() {add_filter( 'get_comment_author', array( $this, 'wpb_get_comment_author_role' ), 10, 3 );add_filter( 'get_comment_author_link', array( $this, 'wpb_comment_author_role' ) );} //Get comment author role function wpb_get_comment_author_role($author, $comment_id, $comment) { $authoremail = get_comment_author_email( $comment); //Check if user is registeredif (email_exists($authoremail)) {$this->comment_user_role = "(作者)";} else { $this->comment_user_role = '';} return $author;}  //Display comment author                   function wpb_comment_author_role($author) { return $author.= $this->comment_user_role; } }new WPB_Comment_Author_Role_Label;endif;

Update:发现了一个更简单的方法,只需要修改CSS样式就能实现这样的功能,只需找到作者的评论,用CSS伪元素就行了,下面是我的使用的代码:

.bypostauthor > .comment-body > .comment-meta > .comment-author > .fn:after {     content: "作者";    background: #FF1100;    color: white;        margin: 0 3px;    border-radius: 3px;    font-size: 8px;    padding: 1px 2px;    vertical-align: middle;}    

2023年6月28日星期三

WordPress设置robots.txt的最佳方法

很久以前我就设置了博客的robots.txt,想让搜索引擎只抓取网站中关键的内容,不抓取后台的文件和页面。这样做的原因如下:

搜索机器人对每个网站都有一个爬网配额,这意味着它们在爬网会话期间对一定数量的网页进行爬网。如果他们没有完成对您网站上所有网页的抓取,那么它们将在下一个会话中返回并恢复抓取。这可能会减慢网站索引的速度。

您可以通过禁止搜索机器人尝试抓取不必要的页面(如 WordPress 管理页面、插件文件和主题文件夹)来解决此问题。通过禁止不必要的网页,可以节省搜索引擎爬网配额。这有助于搜索引擎抓取网站上的更多页面并尽快将其编入索引。

我在网上各处寻找robots.txt的设置方法,取各家之长最终将robots.txt设置如下(注意现在这个方法已经过时了):

User-agent: *Disallow: /wp-admin/Disallow: /wp-content/Disallow: /wp-includes/Disallow: /trackback/Disallow: /comments/Disallow: /attachment/Disallow: /comments/feedDisallow: /feedDisallow: /*/feedDisallow: /*/comment-page-*Disallow: /*?replytocom=*Disallow: /*/trackbackDisallow: /?s=*Disallow: /*/?s=*\Disallow: /wp-*.php

最近我才知道这样设置robots.txt已经是不对的(过时了),因为搜索引擎在不断进步,上面那样设置robots.txt反而不利于搜索引擎索引。而且即使一个页面被robots.txt阻止了,它可能仍会被编入索引,如果不想让它被搜索引擎索引,最好的方法是在页面上放置noindex元标记。

因为WordPress已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域,所以,对于WordPress,设置robots.txt最好的示例如下(对于所有爬虫程序不受限制地自由抓取这个网站):

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

以下内容来源自:https://yoast.com/ultimate-guide-robots-txt/

robots.txt优点:管理爬网预算

通常可以理解,搜索蜘蛛到达一个网站时,会预先确定它将抓取多少页面(或它将花费多少资源/时间,基于网站的权威/大小/声誉,以及服务器的响应效率)。SEO称之为爬行预算。

如果您认为您的网站存在抓取预算问题,阻止搜索引擎将精力「浪费」在网站的不重要部分可能意味着专注于重要的部分。

有时阻止搜索引擎抓取您网站有问题的部分可能是有益的,尤其是在必须进行大量 SEO 清理的网站上。整理好东西后,您可以让它们重新进入。

robots.txt缺点:不从搜索结果中删除页面

即使您可以使用robots.txt文件告诉爬虫它不能在您的网站上的位置,您也不能使用它向搜索引擎说哪些URL不会显示在搜索结果中。换句话说,阻止它不会阻止它被索引。如果搜索引擎找到足够的指向该 URL 的链接,它将包含它;它只是不知道该页面上的内容。

如果您想可靠地阻止网页出现在搜索结果中,请使用noindex元标记。这意味着要找到该标记,搜索引擎必须能够访问该页面,因此不要用robots.txt阻止它。 

使用 noindex 阻止搜索引擎编入索引(https://developers.google.cn/search/docs/crawling-indexing/block-indexing?hl=zh-cn)

noindex 是一个包含 <meta> 标记或 HTTP 响应标头的规则集,用于防止支持 noindex 规则的搜索引擎(例如 Google)将内容编入索引。当 Googlebot 抓取该网页并发现该标记或标头时,Google 就会完全阻止该网页出现在 Google 搜索结果中,不论是否有其他网站链接到该网页。

不要在robots.txt中阻止CSS和JS文件

自2015年以来,Google Search Console警告网站所有者不要阻止CSS和JS文件。多年来,我们一直告诉你同样的事情:不要在你的robots.txt中阻止CSS和JS文件。让我们解释一下为什么您不应该阻止Googlebot的这些特定文件。

通过阻止CSS和JavaScript文件,您可以阻止Google检查您的网站是否正常运行。如果您屏蔽了文件中的 CSS 和 JavaScript 文件,Google 将无法按预期呈现您的网站。现在,谷歌无法理解您的网站,这可能会导致排名降低。此外,甚至像 Ahrefs 这样的工具也会渲染网页并执行 JavaScript。所以,如果你想让你最喜欢的SEO工具工作,不要阻止JavaScript。

这与谷歌变得更加「人性化」的普遍假设完全一致。谷歌希望像人类访问者一样查看您的网站,以便它可以区分主要元素和附加元素。谷歌想知道JavaScript是增强了用户体验还是破坏了用户体验。

robots.txt缺点:不传播链接值

如果搜索引擎无法抓取网页,则无法将链接值分布在该网页上的链接中。当你在robots.txt中阻止了一个页面时,这是一个死胡同。任何可能流向(和流经)该页面的链接值都将丢失。

传统上,WordPress喜欢阻止对wp-admin和wp-include目录的访问。 但是,这已经不再被视为最佳实践。

以下内容来源自:https://kinsta.com/blog/wordpress-robots-txt/#what-to-put-in-your-robotstxt-file

robots.txt并不是控制搜索引擎索引哪些页面的万无一失的方法。如果您的主要目标是阻止某些页面包含在搜索引擎结果中,正确的方法是使用noindex元标记或密码保护。

这是因为你的robots.txt并没有直接告诉搜索引擎不要索引内容——它只是告诉他们不要抓取它。虽然 Google 不会从您的网站内部抓取标记区域,谷歌自己声明如果外部网站链接到您使用 robots.txt 文件排除的网页,Google 仍可能会将该网页编入索引。

谷歌网站管理员分析师约翰·穆勒(John Mueller)也证实,如果一个页面有指向它的链接,即使它被 robots.txt阻止了,可能仍会被编入索引。

以下内容来源自:https://yoast.com/wordpress-robots-txt-example/

搜索引擎不断改进他们抓取网络和索引内容的方式。这意味着几年前曾经是最佳实践的东西可能不再有效,甚至可能损害您的网站。

如今,最佳实践意味着尽可能少地依赖robots.txt文件。只有当您遇到复杂的技术挑战(例如,具有分面导航的大型电子商务网站)或没有其他选择时,才真正需要robots.txt文件中的URL。

通过robots.txt阻止URL是一种“蛮力”方法,可能会导致比解决更多的问题。

对于大多数WordPress网站,以下示例是最佳实践:

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

这段代码有什么作用?

  1. User-agent: * 该指令指出,以下任何说明适用于所有爬网程序。
  2. Disallow: 该指令没有进一步的说明,所以我们说,所有爬虫都可以不受限制地自由抓取这个网站。
  3. 在robots.txt文件中,我们还链接到XML站点地图的位置,使Google,Bing和其他搜索引擎更容易找到它。
  4. 我们还为查看文件的人提供了一些信息(链接到此页面),以便他们了解我们为什么以这种方式设置文件。

WordPress和Yoast SEO已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域(通过x-robots HTTP标头)。

robots.txt创造死胡同

搜索引擎需要发现、抓取和索引您的页面,然后您才能在搜索结果中争夺可见性。如果您通过 robots.txt 阻止了特定网址,搜索引擎将无法再抓取这些页面以发现其他网址。这可能意味着关键页面不会被发现。

robots.txt否认其价值

SEO的基本规则之一是来自其他页面的链接会影响您的表现。如果某个网址被阻止,搜索引擎不仅不会抓取它,而且还可能不会分发指向该网址或通过该网址网站上其他页面的任何“链接值”。

谷歌完全呈现您的网站

人们过去常常阻止对CSS和JavaScript文件的访问,以使搜索引擎专注于那些最重要的内容页面。如今,谷歌获取你所有的样式和JavaScript,并完全呈现你的页面。了解页面的布局和呈现方式是评估质量的关键部分。所以谷歌不喜欢你拒绝它访问你的CSS或JavaScript文件。

以前阻止访问您的目录和插件目录的最佳实践不再有效,这就是为什么我们与 WordPress 合作删除了 4.0 版的默认禁止规则。

链接到您的 XML 站点地图有助于发现

robots.txt 标准支持将指向 XML 站点地图的链接添加到文件中。这有助于搜索引擎发现您网站的位置和内容。

这可能感觉是多余的,因为您应该已经将站点地图添加到Google Search Console和Bing网站管理员工具帐户中,以访问分析和性能数据。但是,在robots.txt 中拥有该链接为爬虫提供了一种万无一失的方式来发现您的站点地图。

2023年3月9日星期四

谷歌AdSense的自动广告导致侧边栏掉到下面去

今天发现博客的网页打开很奇怪,原来是侧边栏掉到下面去了。本来左侧是文章内容,右侧是侧边栏,现在变成了左侧是文章内容,下面是谷歌AdSense广告,再下面才是侧边栏。

网站用的是谷歌AdSense的自动广告,看来是谷歌将广告插入到文章内容和侧边栏之间了。出错的网页结构如下:

<div class="row" style="height: auto !important;">      <div id="primary" class="content-area col-lg-8" ></div>/*文章内容*/     <div class="google-auto-placed" style="width: 100%; height: auto; clear: both; text-align: center;"></div>/*谷歌AdSense广告*/     <aside id="secondary-1" class="sidebar sidebar-secondary-1 text-left col-lg-4" ></div>/*侧边栏*/</div>

我一开始以为是谷歌自动广告的问题,登录AdSense的自动广告设置页面也找不到可以配置的选项,之后去AdSense的帮助论坛去发帖求助。

后来网上有人说AdSense的自动广告会破坏页面显示样式,因为AdSense自动广告通过分析页面的结构来插入广告,如果网页结构有问题会导致页面错乱。这时我觉得可能我的主题有问题,通过浏览器自带的开发者工具,发现class=”row”用的是弹性布局display: flex,在class=”row”中添加以下代码问题就解决了:

flex-direction: row;  /*作为一行,水平地显示弹性项目*/flex-wrap: nowrap;    /*flex中的元素被摆放到一行*/

这样把文章内容和侧边栏摆到一行去了,而且不换行,谷歌的自动广告就没法在它们之间插入广告把侧边栏挤掉到下面去了。

2022年12月8日星期四

博客同步到WordPress.com托管平台

独立博客有个问题需要定期的续费域名和主机空间,如果主观上不想续费,客观上忘记续费或者不能续费的话,博客也就不复存在了,辛辛苦苦写的文字也就没有了。

我一直都有这个担心,每篇文章都会同步到邮箱,每年会把当年写的所有文章一篇篇复制下来保存在本地电脑。但这样做还是有一个问题,博客不存在了,在网络世界中这些文字就消失了,其他人再也看不见了。几年前把博客里的文章同步到Blogger,但是导出的文件还需要转换格式才能顺利导入,而且Blogger长期被墙,访问不方便。

最近发现WordPress自己有个博客托管平台WordPress.com,注册账号后就会有一个免费的博客网站了,不用自己去购买域名和主机空间,操作起来和WordPress一模一样。

我的博客用的就是WordPress搭建的,导出文章,再导入WordPress.com很顺畅,几分钟就搞好了,不用转换格式,而且WordPress.com国内可以正常访问,比较方便些。

但是在使用WordPress.com时发现和独立博客的区别,没法安装插件、没法修改页面代码、没法添加广告等,处处受限制,不能随心所欲地控制博客。但是在WordPress.com上面写博客不用管域名和服务器,每年可以剩下几百块钱,而且只要WordPress.com一直存在,写的文章就一直存在。我这几天就看到有的博客已经十几年没更新了,博客的文章仍然可以正常访问。

我打算定期将博客里的文章同步到WordPress.com上,这样即使这个博客没有了,这些年写的文字在网络世界里还会继续存在。

说了这么多,我的WordPress.com上的博客网址是:https://jfsay.wordpress.com/

2022年11月23日星期三

开始使用WordPress子主题

新的主题安装好以后或多或少会对它进行修改,但是当主题更新以后修改的内容就会被覆盖丢失了,WordPress早就考虑到这个问题,那就是子主题。

除非你安装的主题永远不会更新,不然尽快使用子主题吧,建议安装完新主题后立即创建子主题。

创建子主题的方法:

一、通过WordPress万能的插件,比如Child Theme Configurator,创建完成子主题就可以把插件删除了。

二、手工创建,下面说下手工创建的步骤

假设原主题的名字是ABC

1.在themes目录新建一个文件夹ABC Child(和ABC在同一级目录)

2.在ABC Child下新建style.css文件

3.在style.css文件中添加以下内容:

/*
Theme Name: ABC Child
Template: ABC
*/

4.这样子主题也就创建完成了,启用子主题

5.以后如果改动原主题中任何的内容,只要在ABC Child新建同名文件就行了。简单的方法是复制一份文件到ABC Child中,然后再修改这份文件。

6.模板函数 (functions.php)是个例外,子主题的functions.php和原主题是同时生效的,也就是说原主题的functions.php里的内容不要出现在子主题中,子主题functions.php一开始是空白的,只新增修改的内容。

2022年11月22日星期二

终于解决了WordPress手机端发布文章的问题——都是XMLRPC惹的祸

现在博客里的绝大多数文章都是在手机上写的,写好以后也是通过手机来发布。

今年7月开始,WordPress手机客户端发布文章的时候总是提示失败,怎么都弄不好,于是把这个APP卸载了,重新安装,重新绑定站点,这时提示「无法连接。服务器上没有所需的XML-RPC方法」。

这时我知道问题出现在xmlrpc上了,我反复找主机商好几次,主机商说他什么都没有做,让我自己停用所有的插件和使用默认主题试一下,我尝试之后问题还是没有解决。

我之后在网上查找「xmlrpc不能使用」的原因,没想到找到的却是「xmlrpc禁用」的方法,心想禁用的方法反过来也就是使用的方法,于是我把这些禁用xmlrpc的方法都看了一遍。方法有如下几个:修改functions.php、.htaccess文件、wp-config.php、Apache配置文件和安装插件等。除了Apache配置文件因为没有权限查看和修改外,其他的我都试了还是没有解决。

我把整个站点的文件下载了下来,使用查找文件内容的软件来搜索「xmlrpc」和「xml」的关键字,一个个文件来查找,没有找到问题所在。

后来发现访问https://jingfengshuo.com/xmlrpc.php会跳转到127.0.0.1,于是又去搜索WordPress做301重定向的方法,想看下哪里做了这个重定向,找了cpanel和.htaccess也没找到xmlrpc.php被跳转的地方。

实在找不到解决办法,就去WordPress的官方论坛看看,看来看去也没找到同样问题的帖子。

试了好多方法都没能解决,只好作罢,我在手机浏览器里收藏了博客的后台网址,这几个月只能通过手机浏览器用账号密码登录后台来发布文章,虽然不方便但也能用。

今天在博客后台搜索xmlrpc的插件,发现一款名叫「Rename XMLRPC」的插件,它的介绍如下:

Make XML-RPC work if you rename the file. Some hosts block access to xmlrpc.php file making it impossible to use

这不就是我要的功能吗?真的是踏破铁鞋无觅处啊。我赶紧安装了这个插件,安装后却没找到配置和使用界面,再打开插件的详情页面,作者写的几句话的使用方法实在看不懂。于是打开插件文件来看代码,看到作者使用xmlrpc2.php这个名字。于是我把自带的xmlrpc.php复制了一份,重命名为xmlrpc2.php,然后再WordPress安卓客户端绑定网站,输入https://www.jfsay.com/xmlrpc2.php,成功绑定了网站!

时隔四个月,终于又能在WordPress手机客户端连接网站了,这四个多月我花了几十个小时来解决这个问题而不得,现在总算解决了,太高兴了!

2022年11月21日星期一

WordPress使用WP-Syntax插件的问题

收到Google的邮件,说是在我的网站上检测到「移动设备易用性问题」,邮件内容如下:

您好!Search Console 发现您的网站受到3 个移动设备易用性问题的影响。我们在您的网站上发现了以下问题。我们建议您尽可能修正这些问题,以便您的网站在Google 搜索中实现最佳体验和覆盖率。
首要问题
•可点击元素之间的距离太近
•文字太小,无法阅读
•内容宽度超过了屏幕显示范围

初看这封邮件觉得谷歌可能搞错了,我的博客里的字体够大了,自己平时都在用手机流量,看起来也没问题。

根据邮件内的超链接,跳转到了Google Search Console,里面有这3个问题的详细说明和具体的网页URL,我把这些URL粘贴到浏览器中访问发现了问题所在,它们有一个共同属性:每个页面的文章里都粘贴的有「代码」,用的是WP-Syntax插件。

这个插件用来高亮显示代码的,但是也带来了谷歌所指的几个问题:字体太小、距离太近、有的代码如果不换行会超出屏幕范围。

为什么会用WP-Syntax插件?好多年前WordPress用的还是经典编辑器(Classic Editor),这个编辑器对文章中插入代码很不友好,只好用插件来解决这个问题。

后来WordPress使用了古腾堡编辑器(Gutenberg),这个编辑器原生支持「代码」的插入,使用起来很方便,不再像以前插入代码时需要在代码编辑器和可视化界面来回切换。最近插入代码的文章我使用的都是古腾堡编辑器自带的功能,但是以前写的文章太多,我又懒得动它们,所以之前使用WP-Syntax插件来显示代码的文章就没去管了。

现在发现了WP-Syntax插件的问题,只好改正了。文章数量比较多,我试图寻找「智能替换」的方法,没有找到,只能手工一篇篇文章编辑替换了,花了我几个小时。看来使用插件一时爽,隐患却很多,以后尽量用WordPress原生的功能了。

2022年11月17日星期四

WP-PostViews实现近期热门文章排行的方法

WP-PostViews是按文章的浏览量显示最多/最少文章,但是没有限定时间,浏览量是全站文章统计的,这就存在一个问题:先发布的文章由于时间更久,浏览量累计起来更大,所以热门文章排行很久就不会产生变化。

据说WP-PostViews以前的版本提供了get_timespan_most_viewed这个函数来实现设定日期的文章排行,之后这个函数取消了。

2019年在WP-PostViews插件的讨论中,有人提出“Display most viewed posts in some period of time”,不过插件作者的答复是“This option was never possible because the plugin only stored accumulated post views.”作者有点不负责任地答非所问,即使「插件仅存储累计的帖子浏览量」,也可以实现给定时间内的文章排行啊。

我在浏览其他的帖子中发现了这个问题的解决方法,只需增加几行代码就行了,步骤如下:

1、找到WP-PostViews插件下的wp_postviews.php文件

2、找到Display Most Viewed Page/Post的get_most_viewed函数

3、在$most_viewed = new WP_Query( array( ) ); 中添加以下代码:

'date_query' => array('after' => '1 year ago',),

你可以按需将时间参数改为1 week ago、1 month ago等。

不过,这种方法有个问题,当插件升级后修改的内容会丢失,需要重新添加代码。

2022年11月14日星期一

谷歌广告(Google AdSense)不能正常显示了

突然发现博客里挂的谷歌广告不能正常显示了,为了确定不是自己网站的问题,我在公司和家里分别访问挂谷歌广告的好几个网站,谷歌广告均不能正常显示。不同浏览器显示的结果不一样。有的显示如下:

googleads.g.doubleclick.net 拒绝了我们的连接请求。

有的浏览器显示如下(其中xxx是一堆很长的参数的略写,全部贴出来显得太长了):

网页无法打开
位于 https://googleads.g.doubleclick.net/pagead/xxx 的网页无法加载,因为:
net::ERR_CONNECTION_REFUSED

谷歌退出中国已经十多年了,刚开始谷歌地图和翻译还能使用,后来地图也没了,今年谷歌翻译也关闭了,谷歌广告应该是仅有的能正常访问的谷歌服务了。现在谷歌广告也不能正常显示了,谷歌算是彻底地离开了。

这事对小站长来说是不小的损失,盈利模式本来就不多,挂推广联盟的广告是最便捷最实际的赚钱方式,国内的广告联盟都要求备案,而且鱼龙混杂,有的还没等到提现早就跑路了,谷歌广告是难得的公认度很高的广告联盟。

对不以赚钱为目的的博客主来说,每年都要承担服务器和域名的费用,挂上谷歌广告也可以稍微补贴点开销。没有了谷歌广告,以后可能只能为爱发电了。

——–update 11月18日——–

我在本地ping googleads.g.doubleclick.net会返回127.0.0.1,通过在线ping工具发现只有广东地区会返回127.0.0.1,全国大部分地区都是正常的,这说明谷歌广告只在部分地区被DNS污染了。

对于googleads.g.doubleclick.net域名被DNS污染,我们什么也做不了,只能等待解封的那一天。如果想在污染地区正常查看谷歌广告的话,也很简单。PC端修改hosts文件,把正确的ip填进去就行了。手机端修改hosts比较麻烦,安卓手机可以开「加密DNS」(有的叫「私人DNS」),在指定DNS主机服务那里填dns.google(dot.360.cn、dns.pub 或者 dns.alidns.com)就好了。这个方法只能让你自己看到广告,没办法让别人也看到。

2022年9月24日星期六

博客换了新的主题样式

博客从一开始使用iNove主题,一用就是12年,今天花了几个小时换了一款新的主题SacchaOne,这款主题文章块状显示,支持页面自适应和嵌套评论。

为什么要换主题,就是LiteSpeed Catch这个插件闹的。

自从安装了LiteSpeed Catch插件,博客的加载速度明显快了好多。但是有一个问题,博客首页总是随机显示桌面版和手机版的主题,怎么搞都搞不定。

为什么会出现这个问题?因为博客用了两套主题,分别是桌面版和移动版。这个功能是WPtouch插件自动实现的。WPtouch插件会自动判断访问者的客户端是PC端还是移动端,如果是PC端就加载PC端的主题,如果是移动端就加载移动端的主题。

为什么要用这个插件啊?因为iNove主题不是自动响应/自适应的主题,只能显示PC端主题,因为是固定宽度,在移动端显示要缩放很不方便。所以为了方便在移动端浏览网站,只好安装了WPtouch插件。

那么为什么不换一个支持自响应的主题?因为iNove主题用了这么久,前前后后修改了不少的东西,如果换一个新的主题又要花时间来进行修改和适配。因为懒,还是因为现在对主题样式无所谓,所以一直都没有更换主题。

这次为了LiteSpeed Catch插件,我动起了更换主题的念头。 去WordPress官方themes列表里浏览自己觉得好看的主题,我的需求不高,想要简约的,最好是无图片的主题。没想到却找到一款满意的主题出来。找到以后更换主题,也就用了几分钟,但是之后花了一下午的时间来修改。修改的主要地方有如下:

一、字体和样式

SacchaOne有的字体小,有的字体大。利用浏览器的「调试工具F12」很容易调试,可以实时查看修改的效果。现在WordPress支持自定义CSS功能,也能实时查看效果,CSS改起来很方便。

又调整了几处div块的位置,修改了顶部菜单显示分类而不是页面。

这一处的修改基本上没费什么时间。

二、侧边栏隐藏

SacchaOne主题支持自动响应浏览器屏幕的大小,遇到小屏幕的客户端,侧边栏会自动掉到下面去。但是我想要的效果是侧边栏隐藏,而不是掉下去。修改起来也很简单,改一下CSS,如下:

@media (max-width: 760px){
.hideonmobile{
display: none;
}
}

这段代码的意思就是当屏幕小于760像素时,侧边栏自动隐藏。这里的760可以根据需要修改。

三、侧边栏增加内容

侧边栏使用WordPress自带的「最新评论」,修改了显示的样式,但是显示的效果还是不满意,每条评论显示两行,一行是文章的标题,一行是评论内容。我只想要一条带内容的,暂时还没有时间去摸索。

增加了AdSense广告,修改了样式。

四、首页摘要显示

首页摘要显示搞了半天也没搞好,还是用之前的WP-UTF8-Excerpt插件来搞定。

五、浏览量显示

在首页和文章页加了WP-PostViews插件的显示函数就可以了。

六、相关文章显示

Yet Another Related Posts Plugin (相关文章)插件调CSS样式调了半天。

七、其他自定义页面

修改了「常用链接」的页面,这个CSS调了好久才调好。

这次更换主题比我想的简单一些,因为不懂CSS,花了好长时间来摸索。启用了LiteSpeed Catch插件后停用了WP-PageNavi和WPtouch两个插件,目前的使用的插件有:Akismet、Database Backup for WordPress、WP-PostViews、WP-Syntax、WP-UTF8-Excerpt、Yet Another Related Posts Plugin、LiteSpeed Catch.

2023/4/5更新

现在博客启动了Google Adsense自动广告,不用自己考虑广告的位置和样式了。

首页文章摘要显示一百字左右,也没必要使用WP-UTF8-Excerpt插件了。

因为WordPress后台支持代码格式,于是停用了WP-Syntax插件,不过之前的有代码的文章需要我一篇篇修改,工作量有点大。

增加了文章存档页,用列表的方式显示全部文章。

代码实现侧边栏「最新评论」,觉得WordPress自带的还是太繁琐,我不想显示作者和文章标题,只想用列表显示评论的内容即可。

博客换了新的主题样式

博客从一开始使用iNove主题,一用就是12年,今天花了几个小时换了一款新的主题SacchaOne,这款主题文章块状显示,支持页面自适应和嵌套评论。

为什么要换主题,就是LiteSpeed Catch这个插件闹的。

自从安装了LiteSpeed Catch插件,博客的加载速度明显快了好多。但是有一个问题,博客首页总是随机显示桌面版和手机版的主题,怎么搞都搞不定。

为什么会出现这个问题?因为博客用了两套主题,分别是桌面版和移动版。这个功能是WPtouch插件自动实现的。WPtouch插件会自动判断访问者的客户端是PC端还是移动端,如果是PC端就加载PC端的主题,如果是移动端就加载移动端的主题。

为什么要用这个插件啊?因为iNove主题不是自动响应/自适应的主题,只能显示PC端主题,因为是固定宽度,在移动端显示要缩放很不方便。所以为了方便在移动端浏览网站,只好安装了WPtouch插件。

那么为什么不换一个支持自响应的主题?因为iNove主题用了这么久,前前后后修改了不少的东西,如果换一个新的主题又要花时间来进行修改和适配。因为懒,还是因为现在对主题样式无所谓,所以一直都没有更换主题。

这次为了LiteSpeed Catch插件,我动起了更换主题的念头。 去WordPress官方themes列表里浏览自己觉得好看的主题,我的需求不高,想要简约的,最好是无图片的主题。没想到却找到一款满意的主题出来。找到以后更换主题,也就用了几分钟,但是之后花了一下午的时间来修改。修改的主要地方有如下:

一、字体和样式

SacchaOne有的字体小,有的字体大。利用浏览器的「调试工具F12」很容易调试,可以实时查看修改的效果。现在WordPress支持自定义CSS功能,也能实时查看效果,CSS改起来很方便。

又调整了几处div块的位置,修改了顶部菜单显示分类而不是页面。

这一处的修改基本上没费什么时间。

二、侧边栏隐藏

SacchaOne主题支持自动响应浏览器屏幕的大小,遇到小屏幕的客户端,侧边栏会自动掉到下面去。但是我想要的效果是侧边栏隐藏,而不是掉下去。修改起来也很简单,改一下CSS,如下:

@media (max-width: 760px){
.hideonmobile{
display: none;
}
}

这段代码的意思就是当屏幕小于760像素时,侧边栏自动隐藏。这里的760可以根据需要修改。

三、侧边栏增加内容

增加了的WordPress自带的「最新评论」,修改了显示的样式,但是显示的效果还是不满意,每条评论显示两行,一行是文章的标题,一行是评论内容。我只想要一条带内容的,暂时还没有时间去摸索。

增加了AdSense广告,修改了样式。

四、首页摘要显示

首页摘要显示搞了半天也没搞好,还是用之前的WP-UTF8-Excerpt插件来搞定。

五、浏览量显示

在首页和文章页加了WP-PostViews插件的显示函数就可以了。

六、相关文章显示

Yet Another Related Posts Plugin (相关文章)插件调CSS样式调了半天。

七、其他自定义页面

修改了「常用链接」的页面,这个CSS调了好久才调好。

这次更换主题比我想的简单一些,因为不懂CSS,花了好长时间来摸索。启用了LiteSpeed Catch插件后停用了WP-PageNavi和WPtouch两个插件,目前的使用的插件有:Akismet、Database Backup for WordPress、WP-PostViews、WP-Syntax、WP-UTF8-Excerpt、Yet Another Related Posts Plugin、LiteSpeed Catch.

2022年9月16日星期五

LiteSpeed缓存插件首页显示的问题(失效)

这几天都在折腾LiteSpeed Catch这个插件,主要的问题就出在手机端和桌面端(PC)的显示上。在《LiteSpeed缓存插件和WPtouch冲突的解决方法》已经解决了手机端和桌面端(PC)分别显示两个主题版本的问题,但是又出现了首页显示的新问题:手机端显示桌面端的首页版式。

我找了LiteSpeed Catch和Wptouch的帮助文档都没有解决问题,去bing找了LiteSpeed Catch homepage关键字的英文网页,也没有找到解决办法。

我在LiteSpeed缓存插件的「例外规则」里的「不缓存的URL」中添加了首页的完整域名和index.php的记录,还是没有解决。

昨天突然看到了LiteSpeed Catch文档中对「Guest Mode」的介绍,我尝试着把这个开关打开,没想到首页显示异常的问题解决了,现在手机端和桌面端(PC)分别显示不同的页面版式了。「Guest Mode」的说明如下:

Guest Mode

OFF

When Guest Mode is enabled, LSCache serves a default version of the page from cache for a visitor’s first request. This means, for this first visit only, ESI is not enabled, and no cache varies are considered.

Once the HTML of the page is loaded, then an Ajax call is used to load the “correct” version of the page for that visitor (i.e., the one where ESI and cache varies are considered, and whatever optimizations you normally run on your site are used).

这段话的意思是说访客模式下,第一次加载页面调用缓存中的版本(数据可能不正确),然后再去加载「正确的数据」。说实话,读完了我也不懂这个功能是什么意思,反正问题解决了。

update 9月24日

最终还是没有解决这个问题,首页还是随机的显示桌面版和移动版,我被迫换了自适应的主题,停用了WPtouch插件

LiteSpeed缓存插件首页显示的问题(失效)

这几天都在折腾LiteSpeed Catch这个插件,主要的问题就出在手机端和桌面端(PC)的显示上。在《LiteSpeed缓存插件和WPtouch冲突的解决方法》已经解决了手机端和桌面端(PC)分别显示两个主题版本的问题,但是又出现了首页显示的新问题:手机端显示桌面端的首页版式。

我找了LiteSpeed Catch和Wptouch的帮助文档都没有解决问题,去bing找了LiteSpeed Catch homepage关键字的英文网页,也没有找到解决办法。

我在LiteSpeed缓存插件的「例外规则」里的「不缓存的URL」中添加了首页的完整域名和index.php的记录,还是没有解决。

昨天突然看到了LiteSpeed Catch文档中对「Guest Mode」的介绍,我尝试着把这个开关打开,没想到首页显示异常的问题解决了,现在手机端和桌面端(PC)分别显示不同的页面版式了。「Guest Mode」的说明如下:

Guest Mode

OFF

When Guest Mode is enabled, LSCache serves a default version of the page from cache for a visitor’s first request. This means, for this first visit only, ESI is not enabled, and no cache varies are considered.

Once the HTML of the page is loaded, then an Ajax call is used to load the “correct” version of the page for that visitor (i.e., the one where ESI and cache varies are considered, and whatever optimizations you normally run on your site are used).

这段话的意思是说访客模式下,第一次加载页面调用缓存中的版本(数据可能不正确),然后再去加载「正确的数据」。说实话,读完了我也不懂这个功能是什么意思,反正问题解决了。

update 9月24日

最终还是没有解决这个问题,首页还是随机的显示桌面版和移动版,我被迫换了自适应的主题,停用了WPtouch插件

2022年9月13日星期二

LiteSpeed缓存插件和WPtouch冲突的解决方法

由于我使用的虚拟主机用的是LiteSpeed Web Server服务器,主机商建议安装LiteSpeed Cache缓存插件,这样可以加快WordPress网站的访问速度。一直以来我对网站的访问速度要求不高,只要网页能正常打开就行了,既然主机商这么提醒,那就试一下吧。安装LiteSpeed Cache后能明显感觉到网页加载速度加快了,以前大概等1-2秒才打开,现在瞬间就打开了。

但是发现手机端打开页面会显示桌面版的网页,而不是移动端的网页。因为我的博客一直使用WPtouch插件实现移动端的主题,相当于桌面端和移动端用的是两套主题。

最后通过bing国际版,找到WPtouch官网的帮助页面找到了解决方法。如果Google存在的话,也不至于让我在百度里找这么久找不到答案。

https://support.wptouch.com/article/1446-configuring-cache-plugins-for-wptouch

官方《Configuring cache plugins for WPtouch》给出的解决方法如下:

LiteSpeed Cache

When using the LiteSpeed Cache on your WPtouch-powered website, configuring it to play nicely with WPtouch is very easy. Please follow the steps below.

  1. Go to the LiteSpeed Cache plugin’s settings page
  2. Click on the “Cache” tab
  3. Enable the “Cache Mobile” settings
  4. Purge LiteSpeed Cache’s cache

简单来说就是打开「缓存手机访客」的按钮,我一开始以为这个功能OFF才是手机端不应用桌面版的缓存,原来是打开这个功能选项才是。这个选项的备注是:Serve a separate cache copy for mobile visitors. 意思是为移动端设置专门的缓存。

步骤如下:

  1. 在「LiteSpeed缓存设置」下的「缓存插件」下的「缓存手机访客」按钮打开。
  2. 在「移动用户代理列表」中添加以下内容:

iPhone
iPod
Android
BB10
BlackBerry
webOS
IEMobile/7.0
IEMobile/9.0
IEMobile/10.0
MSIE 10.0
iPad
PlayBook
Xoom
P160U
SCH-I800
Nexus 7
Touch

LiteSpeed缓存插件和WPtouch冲突的解决方法

由于我使用的虚拟主机用的是LiteSpeed Web Server服务器,主机商建议安装LiteSpeed Cache缓存插件,这样可以加快WordPress网站的访问速度。一直以来我对网站的访问速度要求不高,只要网页能正常打开就行了,既然主机商这么提醒,那就试一下吧。安装LiteSpeed Cache后能明显感觉到网页加载速度加快了,以前大概等1-2秒才打开,现在瞬间就打开了。

但是发现手机端打开页面会显示桌面版的网页,而不是移动端的网页。因为我的博客一直使用WPtouch插件实现移动端的主题,相当于桌面端和移动端用的是两套主题。

最后通过bing国际版,找到WPtouch官网的帮助页面找到了解决方法。如果Google存在的话,也不至于让我在百度里找这么久找不到答案。

https://support.wptouch.com/article/1446-configuring-cache-plugins-for-wptouch

官方《Configuring cache plugins for WPtouch》给出的解决方法如下:

LiteSpeed Cache

When using the LiteSpeed Cache on your WPtouch-powered website, configuring it to play nicely with WPtouch is very easy. Please follow the steps below.

  1. Go to the LiteSpeed Cache plugin’s settings page
  2. Click on the “Cache” tab
  3. Enable the “Cache Mobile” settings
  4. Purge LiteSpeed Cache’s cache

简单来说就是打开「缓存手机访客」的按钮,我一开始以为这个功能OFF才是手机端不应用桌面版的缓存,原来是打开这个功能选项才是。这个选项的备注是:Serve a separate cache copy for mobile visitors. 意思是为移动端设置专门的缓存。

步骤如下:

  1. 在「LiteSpeed缓存设置」下的「缓存插件」下的「缓存手机访客」按钮打开。
  2. 在「移动用户代理列表」中添加以下内容:

iPhone
iPod
Android
BB10
BlackBerry
webOS
IEMobile/7.0
IEMobile/9.0
IEMobile/10.0
MSIE 10.0
iPad
PlayBook
Xoom
P160U
SCH-I800
Nexus 7
Touch

2022年8月23日星期二

2022年COM域名又涨价了

最近收到NameSilo的邮件,说COM域名又要涨价了。

We have been informed that Verisign will be increasing prices for .COM domains starting on September 1, 2022. This means that, unfortunately, NameSilo will need to do the same. We are contacting you because you have active or expired .COM domain(s) in your account.

看到邮件就有点生气,去年9月不是刚涨过一次吗,这才一年怎么又涨价了。去年8月在涨价前续费了域名,还是8.99美元,今年已经是9.95美元了,明年要变成10.95美元。看来COM域名还要继续涨下去了。

前段时间还在考虑这个博客要不要继续写下去,现在域名年年涨,成本越来越高,搞的我真的想放弃了。

突然想起来我的google adsense的广告收入还没有提现,如果现在停止了博客,广告收入也就戛然而止了,十几年攒下来的收入就没有了。

利用特殊工具登录了adsense的后台,看到收入已经70美元了,如果运气好点的话再过3年就可以达到最低付款线了。

查了下我的adsense是2010年6月23日申请下来的,到现在已经12年了,再加上3年,也就是15年才能赚100美元,平均一年6.66美元。

现在用最便宜的虚拟主机空间,一年45块钱,大概6.5美元。

这样(域名9+主机6.5)*15-adsense100算下来,博客一直在亏损,15年大概也有1000块钱人民币了。

看来这个网络日记本的成本有点高,一个月也要5块钱。不过也有所收获,每年大约产出10万字的文字,这些文字对我们有特殊的意义,记录了生活的样子,等老了看应该也有意思。或者小孩子大了想了解下父母成长的岁月,也可以自己读一读。

趁着域名涨价前,赶紧续费了3年再说。

2022年COM域名又涨价了

最近收到NameSilo的邮件,说COM域名又要涨价了。

We have been informed that Verisign will be increasing prices for .COM domains starting on September 1, 2022. This means that, unfortunately, NameSilo will need to do the same. We are contacting you because you have active or expired .COM domain(s) in your account.

看到邮件就有点生气,去年9月不是刚涨过一次吗,这才一年怎么又涨价了。去年8月在涨价前续费了域名,还是8.99美元,今年已经是9.95美元了,明年要变成10.95美元。看来COM域名还要继续涨下去了。

前段时间还在考虑这个博客要不要继续写下去,现在域名年年涨,成本越来越高,搞的我真的想放弃了。

突然想起来我的google adsense的广告收入还没有提现,如果现在停止了博客,广告收入也就戛然而止了,十几年攒下来的收入就没有了。

利用特殊工具登录了adsense的后台,看到收入已经70美元了,如果运气好点的话再过3年就可以达到最低付款线了。

查了下我的adsense是2010年6月23日申请下来的,到现在已经12年了,再加上3年,也就是15年才能赚100美元,平均一年6.66美元。

现在用最便宜的虚拟主机空间,一年45块钱,大概6.5美元。

这样(域名9+主机6.5)*15-adsense100算下来,博客一直在亏损,15年大概也有1000块钱人民币了。

看来这个网络日记本的成本有点高,一个月也要5块钱。不过也有所收获,每年大约产出10万字的文字,这些文字对我们有特殊的意义,记录了生活的样子,等老了看应该也有意思。或者小孩子大了想了解下父母成长的岁月,也可以自己读一读。

趁着域名涨价前,赶紧续费了3年再说。