昨天无意间点了Feed,发现打开的页面报错了,如下图:

WordPress RSS Feed 空行

原因很简单,XML的定义必须从首行开始,既然知道报错的原因,那就要找到空行是怎么来的。因为我本身对wordpress的主题加载机制不是很了解,所以不断的调试。

首先对比了本地的主题,发现并没有多余的空行,那我自然联想到了几天前改过主题的index页,其实也就删了一些注释,而且主要改的位置是在文档中部,并不会导致首行的空白。看了index的内容,如下:

<?php get_header(); ?>
	<div id="content">
		<section class="layout">

发现第一行调用的是header文件,可以我记得并没有改过header啊,不管怎么样,还是打开来看看吧:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
	<title><?php if ( is_tag() ) {

显然也是没有问题的,于是我尝试了下把index文件清空,只留了一行文本。重新载入,发现居然还是有空行,这个时候,我开始怀疑是wordpress的问题了,于是乎换了几个主题,发现居然都没有问题。那是为什么呢?

网上的说法是<?php > 尖括号前出现空行就会导致该问题,而且functions.php文件中有空行也会导致这个问题,可是我看了我的functions文件似乎前面没有空行,不过之前有改动过,在末尾加过代码,自然留着空行。于是抱着试一试的心态把空行删了,果然,空行不见了,那么看来这个文件是在header之前就加载了,实在是太坑爹了啊。