修复WordPress站点地图.xml“第3列第6行的错误”
WordPress网站自5.6以后就自带的站点地图,不用借助第三方插件。默认地址为/wp-sitemap.xml。但是老白博客今天在访问站点地图.xml文件时,却报错提示:
This page contains the following errors:
error on line 3 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
通过查询发现可能的原因是:①插件与主题冲突;②wp-config.php或主题文件functions.php文件的开头(<?php行之前)或结尾的空行
经过排查空行发现,应该是第一个原因,更换了主题之后就能正常访问https://www.xcbtmw.com/wp-sitemap.xml
更正:为第二个原因,详看下方代码含义
修复方法
在document主题评论区发现了一个,通过修改wp-blog-header.php代码实现的,将下面的代码替换掉wp根目录该文件即可
<?php
/** * Loads the WordPress environment and template. * * @package WordPress */
if ( !isset($wp_did_header) ) {
$wp_did_header = true; ob_start();
require_once( dirname(__FILE__) . '/wp-load.php' ); ob_end_clean();
wp(); require_once( ABSPATH . WPINC . '/template-loader.php' );
}
但是,经过测试,老白博客该方法仍然不行,需要添加一个PHP文件执行,教程如下
添加主题PHP修复错误
下载spacefix.php文件,放到主题根目录:https://qtrj.lanzoul.com/ikTHS14v389c
在主题目录functions.php文件中的第一行“<?php”之后添加“include(”spacefix.php“);”,添加后的样式如下
<?php
include("spacefix.php");
然后问题就搞定解决了。
代码含义
spacefix.php中代码的作用是为了修复空白字符,以确保输出的内容没有额外的空白字符干扰,也就是上面说到的第一个原因
函数___wejns_wp_whitespace_fix的主要逻辑如下:
初始化变量$allowed和$found,它们用于确定是否允许修复空白字符。
使用headers_list()函数遍历所有的HTTP响应头部信息。
如果某个响应头部信息的内容类型(Content-Type)匹配正则表达式/^content-type:s+(text/|application/((xhtml|atom|rss)+xml|xml))/i,则将变量$allowed设置为true,表示允许修复空白字符。
如果某个响应头部信息以Content-Type开头,则将变量$found设置为true,表示找到了Content-Type头部信息。
如果$allowed为true或者没有找到Content-Type头部信息,则使用正则表达式/As*/m将输入的内容中的开头空白字符替换为空字符串。
否则,直接返回输入的内容。
最后,通过ob_start("___wejns_wp_whitespace_fix")函数,将修复空白字符的函数应用于输出缓冲区,以确保输出中的空白字符被修复。
参考文章
https://wordpress.org/support/topic/sitemap-error-on-line-3-at-column-6-xml/
http://www.518theme.com/wpcourse/514.html
https://presswork.me/error-on-line-3-at-column-6
我还没遇到,但我先关注你,回头有问题过来找你请教,心话,这个主题用着不错,浏览内容太方便了
哈哈,谢谢关注,document主题确实很简洁,我自己也做了一点小修改:https://www.xcbtmw.com/29777.html
刚好遇到这个问题,成功解决了,谢谢楼主