这是一个Wordpress网站,我认为一切都在正确的顺序,并在适当的时间调用。但是,在浏览器中,HEAD
标记后面会输出BODY
标记(包含正确的信息)。
我怀疑某个地方有一个未封闭的标签,Chrome正在自动固定它。 Firefox和Internet Explorer根本不会渲染网站,但不要将HEAD
置于最后,并且不会在错误控制台中提供任何有用的错误。
服务器端debug.log和error.log什么都没有报告,但肯定会有一些关闭。
首先。我的前提是某个地方可能有一个未封闭的标签可能是正确的吗?或者更有可能是出于其他原因?如果是这样,或者如果没有,有关于调试这个特殊巢穴的任何提示吗?
:: 必要代码 :: header.php
<?php
/**
* header.php
*
* Header for wordpress default template
*/
?>
<!doctype html>
<html lang="en">
<head>
<!--
broke up viewport meta tag
for formatting
in real file, all on single line
-->
<meta name="viewport"
content="width=device-width,
initial-scale=1,
user-scalable=no,maximum-scale=1" />
<!-- TODO: Set Meta Values In Header -->
<title><?php the_title(); ?></title>
<?php wp_head(); ?>
</head>
<?
// defined at template_redirect
global $body_class;
?>
<body class="<?php echo $body_class; ?>">
<?php
// defined at template_redirect with hook
global $header_type;
// main navbar
get_template_part('inc/header/nav','primary');
echo build_header( $header_type );
main template body
// main.php
<?php
/**
* Template Name: Main
*
* Main Template page for pht-theme
*
* @package pht-theme
*/
get_header();
$page=my_page_id();
?>
<div class="main-content container <?php echo $page; ?>">
<?php
_build_page( $page );
?>
</div>
<?php
get_footer();
?>
如果它有帮助,请乐意加入更多。
由于
::的更新 ::我发现如果在使用wp_register_scripts
和wp_enqueue_scripts
时我不想在脚注中添加脚本,则会停止发生这种情况。奇怪。
答案 0 :(得分:2)
我的前提是某个地方可能有一个未封闭的标签可能是正确的吗?
没有。在Firefox中检查它。您将看到缺少的结束标记具有不同的效果。 HTML的其余部分将附加到其中。 <head>
和<body>
的顺序不会颠倒。
例如,您可以通过执行此疯狂测试来模拟该效果:
add_action( 'wp_head', function(){
?>
<script>console.log('does it auto close the missing tag?');
<?php
}, 9999);
运行此代码将演示浏览器中呈现的HTML标记显示为:
<script>console.log('does it auto close the missing tag?');</head><body>
或者更有可能是出于其他原因?
是。
如果是这样,或者如果不是,那么关于调试这个特殊的老鼠巢的任何提示?
我首先打开主题的header.php
文件。此文件负责加载网站的标头,即<head>
。通常,此文件中也包含起始<body>
结构。例如,您可以在流行的_s theme中看到HTML标记结构。
打开文件并确保<head>
标记位于文件的第一位。然后调查<body>
标记的定义位置。确保它在头部后面加载。
在某些主题中,我看到头部和身体被分解为部分模板。如果您的主题属于这种情况,请检查它们的加载顺序。
您可以修改您的问题并提供header.php
文件,以便我们仔细查看。
这个问题是相关的,有点类似于给你一些参考: