»

如何利用WordPress的定时任务WP-Cron自动创建XLM格式静态RSS feed

    WordPress  
WP Rocket百度云加速网络安全wordpresswindows主机Wp Super Cache伪静态数据库访问CLB插件IIS工作web.config网站优化重定向CDN腾讯云加速防盗链身份认证htaccessWordPress插件SEO建站前端

如果你使用的是 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)。时光在路上保留所有权利

  1. //定义一个更新时间  
  2. add_filter( 'cron_schedules', 'my_schedules' );  
  3. function my_schedules( $schedules ) {  
  4.     $schedules['ten_minutes'] = array(  
  5.         'interval'  => 600,  
  6.         'display'   => __( '每600秒', '更新一次feeds' )  
  7.     );  
  8.     return $schedules;  
  9. }  
  10.   
  11. //安排当前任务  
  12. if ( !wp_next_scheduled( 'my_schedules' ) ) {  
  13.     wp_schedule_event( time(), 'ten_minutes', 'my_schedules' );  
  14. }  
  15.   
  16. //需要执行的代码函数  
  17. add_action( 'my_schedules', 'renew_feed' );  
  18. function renew_feed() {  
  19.     if ( !defined( 'ABSPATH' ) ){  
  20.         define( 'ABSPATH', dirname(__FILE__) . '/' );  
  21.     }  
  22.     $file_contents = file_get_contents( 'https://域名/myrss.php' );  
  23.     file_put_contents( ABSPATH . "feed/index.xml"$file_contents, LOCK_EX );  
  24. }  

将上述代码放在主题的 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

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 1506字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →