我在WordPress中为我正在开发的东西存储了一些文档,我希望除了常规的模板版本之外,还有一个纯html的单页版本,该版本导航起来更像博客。纯html单页版本的想法是能够保存它并将其包含在产品中。
文档包含在19个自定义帖子类型的帖子中,称为articles。
我在函数中有以下函数。php在文章帖子类型上设置几个查询变量。
// Always sort articles by menu_order
function sort_articles_by_menu_order( $query ) {
if( \'articles\' == get_query_var( \'post_type\' ) ) {
$query->set( \'orderby\', \'menu_order\' );
$query->set( \'order\', \'ASC\' );
}
return $query;
}
add_action( \'pre_get_posts\', \'sort_articles_by_menu_order\' );
// Output all posts on html docs tpl
function get_all_docs( $query ) {
if( isset( $_GET[\'html\'] ) ) {
$query->set( \'posts_per_page\', -1 );
}
return $query;
}
add_action( \'pre_get_posts\', \'get_all_docs\', 9999 );
我还得到了以下函数,用于检查
?html
并切换到我的单页模板。
// Use HTML template for articles if URL paramater set
function html_docs_template_redirect( $template ) {
if( isset( $_GET[\'html\'] ) ) {
$new_template = locate_template( array( \'html-docs.php\' ) );
if ( \'\' != $new_template ) {
return $new_template ;
}
}
return $template;
}
add_action( \'template_include\', \'html_docs_template_redirect\' );
The
html-docs.php
模板是非常基本的,它只是一个中间有在中间的html shell。它不包括
get_header()
,
language_attributes()
或
get_footer()
.
问题是如果我使用the_content()
或apply_filters( \'the_content\', get_the_content() )
, WordPress只返回一些帖子,然后停止所有输出(甚至没有像这样完成页面模板的输出</body></html>
等等)。在Chrome的控制台中,我看到以下错误:
net::ERR_INCOMPLETE_CHUNKED_ENCODING
如果我把得到内容的部分注释掉,一切都很好。即使我打电话
get_the_content()
无需应用过滤器即可正常工作。
我也尝试过使用不同的服务器,但结果相同。
我的模板文件-虽然我认为这不是问题所在。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Aptus Documentation</title>
<style type="text/css">
/* Styles Omitted */
</style>
</head>
<body>
<main id="main">
<header id="header">
<h1>Aptus Documentation</h1>
</header>
<?php // Loop outputs content and stores nav
$contents = \'\';
if (have_posts()) : while (have_posts()) : the_post();
$contents .= \'<li><a href="#\' . $post->post_name . \'">\';
$contents .= get_the_title();
$contents .= \'</a></li>\';
?>
<article id="<?php echo $post->post_name; ?>" class="doc">
<div class="doc-inner">
<header>
<h1><?php the_title(); ?></h1>
</header>
<?php the_content(); ?>
<?php //echo apply_filters( \'the_content\', get_the_content() ); ?>
</div>
</article>
<?php endwhile; endif; ?>
</main>
<nav id="sidebar">
<div class="sidebar-inner">
<h2>Contents</h2>
<ul>
<?php echo $contents; ?>
</ul>
</div>
</nav>
</body>
</html>
我想我也排除了其中一篇文章内容中的编码问题,因为根据我尝试的不同内容,它会在不同的文章中停止输出(似乎只是在停止之前输出一定数量的字节)。
我对此感到迷茫,因此非常感谢您的建议。