无法使用WP_Query()循环播放帖子bbPress

时间:2012-11-20 08:10:41

标签: wordpress bbpress

以下不能正常工作,页面需要永远加载,它会创建很多Apache进程并消耗内存和CPU疯狂

<?php

/**
 * Template Name: Custom forum index
 */

get_header();


?>
            <div id="content" role="main">

                <?php //do_action( 'bbp_template_notices' ); ?>

                <?php
                $args = array(
                   'post_type' => 'forum',
                   'post_status' => 'publish',
                   //'meta_key' => 'age',
                   'orderby' => 'title',
                   'order' => 'ASC',
                   // 'meta_query' => array(
                        // array(
                           // 'key' => '_bbp_topic_count'
                        // ),
                        // array(
                            // 'key' => '_bbp_reply_count'
                        // ),
                        // array(
                            // 'key' => '_bbp_last_active_time'
                        // ),
                        // array(
                            // 'key' => '_bbp_last_topic_id'
                        // )
                    // )
                );
                $query = new WP_Query($args);

                while ($query->have_posts()) : the_post(); ?>

                    <div id="forum-front" class="bbp-forum-front">
                        <h1 class="entry-title"><?php the_title(); ?></h1>
                        <div class="entry-content">

                            <?php //the_content(); ?>

                            <?php //bbp_get_template_part( 'content', 'archive-forum' ); ?>

                        </div>
                    </div><!-- #forum-front -->

                <?php endwhile; ?>

            </div><!-- #content -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>  

潜在的动机是,我正在尝试创建一个自定义论坛索引页面,论坛根据其名称按字母顺序排列。奇怪的是,这种功能并没有附带bbPress

如上所述,我尝试使用WP_Query()循环使用“forum”类型的帖子。 这种方法可能出现什么问题? 我需要在这里使用什么WP_Query()?

2 个答案:

答案 0 :(得分:0)

由于使用了自定义WP_Query,您需要在wp_reset_query();关键字后指定endwhile;。根据Wordpress文档here,“此函数会破坏自定义循环上使用的先前查询。应在循环之后调用函数以确保条件标记按预期工作。

答案 1 :(得分:0)

出了什么问题the_post()。它应该是$query->the_post();代替。

所以正确的循环将是

<?php  
//...  
while ($query->have_posts()) : $query->the_post(); ?>

                <div id="forum-front" class="bbp-forum-front">
                    <h1 class="entry-title"><?php the_title(); ?></h1>
                    <div class="entry-content">

                        <?php //the_content(); ?>

                        <?php //bbp_get_template_part( 'content', 'archive-forum' ); ?>

                    </div>
                </div><!-- #forum-front -->

            <?php endwhile; ?>