为什么添加wp_footer或header会阻止我的404寻呼机正确渲染?

时间:2014-03-16 19:44:21

标签: css wordpress .htaccess http-status-code-404

我在本地计算机上有这个基本的404页面。

我已经编辑了我的.htaccess:

ErrorDocument 404 /wordpress/wp-content/themes/test_theme/404.php

404页面确实有效并且打开正常,但是当我添加wp_head();时,它会中断。背景颜色仍然正常显示,但页面的其余部分失败。

<!DOCTYPE html>
<html lang='en-gb'>
<head>
<title>404 Error</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link href='http://fonts.googleapis.com/css?family=Monoton' rel='stylesheet' type='text/css'>
<style type="text/css">
body {
  background-color: #111;
}

.board {
  position: absolute;
  top: 50%;
  left: 50%;
  height: 150px;
  width: 500px;
  margin: -75px 0 0 -250px;
  padding: 20px;
  font: 75px/75px Monoton, cursive;
  text-align: center;
  text-transform: uppercase;
  text-shadow: 0 0 80px red, 0 0 30px firebrick, 0 0 6px darkred;
  color: red;
}

#error {
  color: white;
  text-shadow: 0 0 80px white, 0 0 30px green, 0 0 6px blue;
}

 </style>
 <?php wp_head(); ?>
</head>
<body>
<div class="board"><p id="error">error</p><p id="code">404</p></div>
<h2><?php _e( 'This is somewhat embarrassing, isn’t it?', 'twentythirteen' ); ?></h2>
<p><?php _e( 'It looks like nothing was found at this location. Maybe try a search?', 'twentythirteen' ); ?></p>
<?php get_search_form(); ?>
</body>
</html>

我想通过以下方式添加一些javascript:

if(is_404()){               wp_register_script('404',get_template_directory_uri().'/js/jquery.novacancy.min.js', false, NULL, true);
    wp_enqueue_script('404');
}

但添加wp_footer();也会破坏页面,就像wordpress打破了我的404页面一样。

2 个答案:

答案 0 :(得分:2)

问题是您直接加载主题文件,它不会加载所有必需的WordPress文件,因此也不会加载函数。因此,wp_footer();wp_header();函数不存在

WordPress会自动处理404错误,因此请删除您添加到.htaccess文件中的行,它将开始正常运行。

请务必阅读以下文章:Creating an Error 404 Page in WordPress

答案 1 :(得分:1)

我认为cale_b已经回答了你,但是为了提供更多信息,wp_head和get_footer是wordpress函数,所以你不能在不调用get_header的情况下调用它们,或者包含在wp_blog_header.php中。

如果你只需要这些函数而不需要整个标题(可能你想要一个自定义的标题,或者根本没有标题),我建议你在php文件的最顶层包含wp_blog_header.php,或者至少在任何标题之前wordpress功能。

wp_blog_header.php可以在wordpress安装的根目录中找到。