无法获取所有(19)条帖子的内容-未完成分块编码

时间:2014-05-29 作者:GusRuss89

我在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\' );
Thehtml-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>
我想我也排除了其中一篇文章内容中的编码问题,因为根据我尝试的不同内容,它会在不同的文章中停止输出(似乎只是在停止之前输出一定数量的字节)。

我对此感到迷茫,因此非常感谢您的建议。

1 个回复
最合适的回答,由SO网友:GusRuss89 整理而成

好吧,我最终发现这是由于几篇文档文章中的一些短代码造成的。我用双方括号[[示例]]避开了它们,现在一切都正常了。

结束

相关推荐

为什么Apply_Filters在循环内部和外部的行为不同?

What I want: 通过创建$query = new WP_Query($args);Why: 以json格式返回特定内容,作为一种API请求,准备在另一个站点上显示What I tried first:foreach($query->posts as $post) { $post->post_content = apply_filters(\'the_content\', $post->post_content); }; 这执行了autop 和do