WordPress实现RSS feed静态化

您所在的位置:网站首页 开启feed WordPress实现RSS feed静态化

WordPress实现RSS feed静态化

2024-07-10 11:24| 来源: 网络整理| 查看: 265

如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

提示:如果你的feed订阅地址不是http://域名/feed这样的格式,以下内容就不要看了。

WordPress的feed地址一般如: https://www.ludou.org/feed。开启feed功能后可以方便RSS阅读器进行订阅,让读者及时收到博客的更新信息,但是开放feed后有个坏处就是,RSS订阅器会定时或不定时的地访问你的feed订阅地址,以便查看你的feed是否更新,除了RSS阅读器会经常访问你的feed,各路文章采集器和蜘蛛也会经常来光顾你的feed,而且你还不能限制他们的访问频率。

因为WordPress提供的feed是动态生成的,虽然有cache功能,但毕竟要运行php代码,feed被频繁访问势必会消耗一定的服务器资源。那我们今天就来讲讲如何实现feed静态化,直接生成一个index.xml文件,放到WordPress根目录下的feed目录,以后访问 http://网站首页/feed 即可直接读取静态的index.xml,无需WordPress动态生成。

1、禁用默认的feed

众所周知,feed的地址一旦确定下来,如果随便更改,之前已经订阅过的读者可能不会再收到文章更新的通知,势必会流失很多老读者,所以要实现feed的静态化,前提应该是不更改原先的feed订阅地址,但是原先的feed是与WordPress的rewrite规则绑定的,直接在feed目录下放置xml文件,势必会引起冲突。

我的上篇文章已经讲了如何彻底移除并关闭WordPress的feed功能,你以为我是故意教你关闭feed功能,闭关锁国,封闭博客与外界的交流吗?这么想你就错了,上篇文章就是为了今天这篇文章准备的。

所以,第一步就是先按照上篇文章:如何彻底移除并关闭WordPress的Rss Feed,禁用WordPress默认的feed。这一步操作完成后,效果就是打开 http://网站首页/feed,会显示404页面不存在,

当然,如果直接在网站根目录下创建目录,然后放入index.xml也是可以的。

2、生成静态feed

如何生成静态feed呢?这里直接用WordPress自带的wp-includes/feed-rss2.php,我对其做了一些修改:

点此下载

下载后解压,得到myrss.php,可以改名后将其上传到WordPress根目录,跟wp-load.php同在一个目录即可。

3、自动更新静态feed

静态之所以为静态,就是如果你不改它,它的内容永远都是不变的,不像php文件那样会关联更新。我们希望每次发布文章或页面后,自动更新静态feed,达到静态feed的内容和网站内容同步的效果。我们可以将以下PHP代码放到当前主题的functions.php中:

function ludou_update_feed($post_ID) { if( wp_is_post_revision( $post_ID ) ) return; if ( get_post_status( $post_ID ) == 'publish' && $_POST['original_post_status'] != 'publish' ) { if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); // 如果你修改过 myrss.php 的文件名称,也要修改下面的 myrss.php $file_contents = file_get_contents(get_bloginfo( 'wpurl' ).'/myrss.php'); file_put_contents(ABSPATH."feed/index.xml", $file_contents, LOCK_EX); } } add_action('publish_post', 'ludou_update_feed', 16); add_action('publish_page', 'ludou_update_feed', 16);

注意:PHP代码应该放到 之间或



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3