WP_QUERY POSTS_PER_PAGE仅返回一个帖子

时间:2014-08-23 作者:Jamie H

我正在尝试修改Genesis选项卡插件,以便在每个选项卡上显示多个帖子。在过去的一个小时里,我一直在徒劳地尝试,但不幸的是,我的一点PHP知识并不能解决这个问题。以下是当前代码,该代码应返回5个帖子标题(\'posts\\u per\\u page\'=>5),但仅显示一个:

// Loop through all chosen categories
        foreach ( (array) $cats as $cat ) :

            if ( ! $cat ) continue; // skip iteration if $cat is empty

            // Custom loop
            $tabbed_posts = new WP_Query( array( \'cat\' => $cat, \'posts_per_page\' => 5, \'orderby\' => \'date\', \'order\' => \'DESC\' ) );

            if ( $tabbed_posts->have_posts() ) : while ( $tabbed_posts->have_posts() ) : $tabbed_posts->the_post();

                echo \'<div id="cat-\' . $cat . \'" \'; post_class( \'ui-tabs-hide\' ); echo \'>\';

                    if( ! empty( $instance[\'show_title\'] ) ) :
                        printf( \'<h2><a href="%s" title="%s">%s</a></h2>\', get_permalink(), the_title_attribute( \'echo=0\' ), get_the_title() );
                    endif;


                echo \'</div><!--end post_class()-->\'."\\n\\n";

            endwhile; endif;

        endforeach;
我猜这与have\\u posts()位于if()语句中有关,但我可能完全错了。有人能给我指出正确的方向吗?在这里搜索有助于我将插件中一些贬值的标签换成更新的版本,但不幸的是,我无法解决手头的“真正”问题。

谢谢

杰米

2 个回复
SO网友:Pat

看起来你可能错过了wp_reset_postdata() 在这里。WordPress codex显示您需要wp_reset_postdata() 在while循环之后。

下面是WordPress的例子(它甚至有posts_per_page 定义):

<?php
// example args
$args = array( \'posts_per_page\' => 3 );

// the query
$the_query = new WP_Query( $args );
?>

<?php if ( $the_query->have_posts() ) : ?>

    <!-- start of the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <?php the_title(); ?>
        <?php the_excerpt(); ?>
    <?php endwhile; ?><!-- end of the loop -->

    <!-- put pagination functions here -->
    <?php wp_reset_postdata(); ?>

<?php else:  ?>

<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>

<?php endif; ?>

http://codex.wordpress.org/Function_Reference/wp_reset_postdata

SO网友:Jamie H

谢谢大家。经过一夜的休息,我找到了一个简单的解决办法。。。

脚本正在插入hide 除了第一个职位外,其他职位都要参加。我不知道昨晚怎么没发现这个。正在删除post_class( \'ui-tabs-hide\' ); 从脚本中修复了它。

我还添加了wp_reset_postdata() 正如Pat所建议的那样。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post