为什么HEAD标签会出现在BODY标签之后?

时间:2016-12-06 22:04:10

标签: html wordpress debugging

这是一个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_scriptswp_enqueue_scripts时我不想在脚注中添加脚本,则会停止发生这种情况。奇怪。

1 个答案:

答案 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文件,以便我们仔细查看。

类似问题

这个问题是相关的,有点类似于给你一些参考:

Tag head after closing tab body