如果你使用的是 Apache 主机,可以利用 Linux wget 命令定时或隔段时间更新你的静态文件 XML 格式的网站地图(sitemap)或 RSS feed。张戈在其博客中早有介绍,这里不再赘述。本文主要讲的是如何利用 WordPress 自带的定时任务 WP-Cron 来生成静态 XML 文件、自动更新 RSS feed。
首先,你需要确保自己没有禁止 WordPress WP-Cron 功能。在 wp-config.php 文件中,需要设置:
define('DISABLE_WP_CRON', false);
之后,为了实现原 feed 地址( 本文举例:https://域名/feed/ )呈现新的静态 xml 文件内容,需要完全关闭系统的 feed 功能,因为此地址是更新固定链接时自动生成的,只有禁止才能不让其显示默认的 feed。在此基础上将生成的 index.xml 文件存储在 feed 目录下,这样就可以在 https://域名/feed/ 网址下看自己的文件了。这个思路可以参考露兜博客的文章。本文的操作主要遵循的步骤如下:
1. 禁用WordPress系统默认的feed
参考露兜博客《如何彻底移除并关闭WordPress的Rss Feed》一文操作即可。
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
2. 使用修改的系统 RSS 文件做基础文件,文件名可自定义为 myrss.php,放到网站根目录下。
露兜已经做了修改,直接用就行。
3. 利用 WP-Cron 每 10 分钟自动生成 feed xml 文件,代码下:
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
- //定义一个更新时间
- add_filter( 'cron_schedules', 'my_schedules' );
- function my_schedules( $schedules ) {
- $schedules['ten_minutes'] = array(
- 'interval' => 600,
- 'display' => __( '每600秒', '更新一次feeds' )
- );
- return $schedules;
- }
- //安排当前任务
- if ( !wp_next_scheduled( 'my_schedules' ) ) {
- wp_schedule_event( time(), 'ten_minutes', 'my_schedules' );
- }
- //需要执行的代码函数
- add_action( 'my_schedules', 'renew_feed' );
- function renew_feed() {
- if ( !defined( 'ABSPATH' ) ){
- define( 'ABSPATH', dirname(__FILE__) . '/' );
- }
- $file_contents = file_get_contents( 'https://域名/myrss.php' );
- file_put_contents( ABSPATH . "feed/index.xml", $file_contents, LOCK_EX );
- }
将上述代码放在主题的 functions.php 文件中即可。
4. 回到主机设置,在 apache 主机的 .htaccess 文件中,将 https://域名/feed/ 下的默认首页文件格式增加一个 xml 格式,即:
<IfModule dir_module> DirectoryIndex index.html index.php index.xml </IfModule>
大功告成。试试吧。代码下载 ,提取码: p3nw
。
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved