我有个棘手的问题。如果我使用chrome element inspector检查WP页面,我会看到两个正文标记:
<body cz-shortcut-listen="true">
<body>
这一点与firebug中的colorzilla(cz shortcut listen=“true”)有关,它会消失。您只有两个没有类的body标记。
问题不在于来自colorzilla的cz快捷方式listen=“true”位。这是关于额外的标签。
这种重复会导致样式和JS问题。如果我查看源代码,那么只有一个
<body>
显示时没有类。
这两个视图中都没有显示body\\u class()中的类,但当它们不在标题中的这一行时,我可以很高兴地将它们回显到源代码中。php
<body <?php body_class();?>>
只需添加
<?php body_class();?>
在渲染body标记的线的上方或下方,可以非常愉快地显示所有body类,以便对它们进行设置。
如果我注释掉在标题中呈现body标记的行。仍然呈现使用php注释此body标记的php
<body cz-shortcut-listen="true">
所有主题都会出现这种情况,本地网络以外的用户以及chrome和firefox也会出现这种情况,因此这似乎不是主题或本地浏览器的问题。(另见下文更新2)
有没有人知道这可能是什么,这是一个非常头痛的问题,我很困惑这可能是什么,甚至是如何着手解决问题。
Staging site displaying the problem here:http://eco.clearintent.co.uk/
UPDATE:这发生在服务器上的每个WP安装上,因此不是WP安装或特定主题。
运行wordpress 4.2.4Server是在EC2 m3上运行Apache/2.2.29PHP/5.3.29Amazon Linux。中等实例。
UPDATE 2:尝试在运行apache 2.4和php 5.6的新ec2实例上安装vanilla wordpress只是为了看看,它也有同样的问题!不影响非wordpress网站。跨浏览器和网络发生,因此不特定于我的本地设置。
UPDATE 3:从命令行使用wget获取站点delivers the correct code WITH the body classes in the single body tag. - 我想知道(如下所示)这是否表明javascript是罪魁祸首,但当我在禁用javascript的情况下访问chrome网站时,问题没有解决,因此这似乎意味着javascript不是问题所在。
UPDATE 4根据下面的答案,问题确实存在于body标签中的奇怪字符,但是,删除和替换这行行不通。唯一有效的方法是围绕html注释中的第一行,并在下面有一行相同的未注释行,因此:
<!--<body <?php body_class(); ?>>-->
<body <?php body_class(); ?>>-->
如果删除顶部的注释行,则新键入的body标记上会再次出现错误
如果我从注释行中删除了body标记,但仍然有一个空注释,那么:
<!-- -->
<body <?php body_class(); ?>>-->
或者我在注释中包含body\\u class函数,因此:
<!--<?php body_class(); ?>-->
<body <?php body_class(); ?>>-->
该行为将重新出现,因此必须存在第一个body标记(即使已注释),以便新的body标记正确呈现。
我已经检查了Apache和php utf-8编码是否到位。我在浏览器中检查该页面是否显示为utf8,实际上是这样。在服务器上
file -bi header.php
将文件显示为ascii。
这让维德和维德越来越多,我有一种让事情运转起来的技巧,但不了解正在发生的事情。
如果您有任何关于如何调试的想法,我们将不胜感激。
谢谢
保罗
解决方案:见下文。为了清楚起见,我添加了一个单独的答案。