昨天在写 WordPress实现feed静态化 这篇文章时,顺便看了RSS2 Feed的模板文件,发现WordPress是提供了filter来设置RSS feed的更新频率的。

什么是更新频率?

在浏览器中打开WordPress的feed订阅地址,一般是http://域名/feed,如https://www.ruikeedu.com/feed,如果不是IE浏览器(可查看源代码),你会看到一堆代码,其中就有这么两行代码:

<code>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>

这其中的hourly是更新频率的单位(每小时),1是更新频率的时间,这么说可能有点难以理解,组合起来讲,就是告诉采集这个feed的人,我这个feed每 1 个 小时 更新一次,建议你每1个小时来采集一次,不要太快,也不要太慢。
当然这两行代码的声明也仅仅是声明,很多feed采集器未必遵守,就像很多搜索引擎未必遵守robots.txt规则一样,但至少聊胜于无,规则是给遵守规则的人制定的嘛。

WordPress设置RSS feed更新频率

WordPress默认设置的更新频率是每1个小时更新一次,这个频率对于绝大多数博客网站来说都是偏高的,每个小时发一篇文章那是什么概念?我看只有采集站能办得到了吧。你说什么,伪原创?伪原创也是需要花时间来伪的好吧,就算是伪原创,一天24小时都在伪?不太可能吧!
说了这么多,那在WordPress中应该怎样设置RSS feed的更新频率呢?WordPress后台没有找到相关的设置项,那我们只能自己写代码了。其实也很简单,在当前主题的functions.php中加入以下代码即可:

<code>
add_filter( 'rss_update_period', function() {return 'daily';} );
add_filter( 'rss_update_frequency', function() {return '3';} );

解释一下,第1行代码中的daily是单位(每天),单位值可以设置为:'hourly', 'daily', 'weekly', 'monthly', 'yearly',学过初中英语的应该都懂,分别代表:每小时,每天,每星期,每月,每年
第2行代码中的3,设置的是更新频率的时间,上面2行代码组合起来就是声明这个feed每3天更新一次。下面加几个例子,便于大家理解。

<code>
// 每36小时
add_filter( 'rss_update_period', function() {return 'hourly';} );
add_filter( 'rss_update_frequency', function() {return '36';} );

// 每2个星期
add_filter( 'rss_update_period', function() {return 'weekly';} );
add_filter( 'rss_update_frequency', function() {return '2';} );

这个频率具体设置多少,应该根据博客的实际更新频率来,设置得太高,文章更新又不那么快,导致feed被频繁访问,肯定会消耗更多的服务器资源;设置低了,会让feed订阅用户不那么及时的看到网站的新文章。