使用WordPress add_feed()函数时触发wp_die错误求助
WordPress自定义Feed触发"This is not a valid feed template"错误的解决
问题描述
使用add_feed()函数添加自定义Feed(访问地址http://localhost/_feed2)时,出现wp_die错误,错误信息如下:
wp_die<![CDATA[WordPress › Error]]> Error: This is not a valid feed template.]]> 404
原使用代码:
function feed2_callback( $is_comment_feed, $feed ) { header( 'Content-Type: application/xml; charset=UTF-8', true ); echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"> <title>Test</title></rss><?php } add_feed( '_feed2', 'feed2_callback' );
错误原因
- PHP标签嵌套错误:代码中在
echo语句后直接闭合PHP标签?>,编写RSS内容后又打开<?php闭合函数,这种写法会导致语法解析异常,WordPress无法识别为有效的feed模板。 - 固定链接规则未刷新:添加新Feed后,WordPress的rewrite规则未更新,导致访问路径匹配失败,触发404状态码。
解决步骤
1. 修正回调函数代码
将原有代码替换为语法正确的版本,统一用PHP输出RSS内容:
function feed2_callback( $feed ) { // 设置正确的Content-Type头 header( 'Content-Type: application/xml; charset=UTF-8', true ); // 输出XML声明和RSS内容 echo '<?xml version="1.0" encoding="UTF-8" ?>'; echo '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"> <title>Test</title> </rss>'; } // 注册自定义Feed add_feed( '_feed2', 'feed2_callback' );
2. 刷新固定链接规则
登录WordPress后台,进入「设置」→「固定链接」页面,无需修改任何设置,直接点击保存更改按钮,触发rewrite规则更新。
3. 测试访问
再次访问http://localhost/_feed2,即可正常加载自定义Feed内容。
内容的提问来源于stack exchange,提问作者Ashok Kumar Panthri
相关产品推荐
相关产品推荐

