在静态页面定制查询中发布归档索引分页

时间:2011-10-25 作者:IntricatePixels

在WordPress中,我有一个使用我创建的特定页面模板的新闻页面。此页面由分配给新闻类别的新闻帖子填充。如果用户想阅读更多新闻,我只需要在这个页面上显示两条最新的新闻帖子,在底部显示上一条/下一条链接。但是,下一个/上一个链接不起作用。单击它们确实会转到/page/2,但它会显示相同的帖子。这是我的代码。。感谢您的任何想法/帮助!

<div id="primary">
<div id="content" role="main">
            <div id="news">
    <?php query_posts( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); ?>
                <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
                    <p class="post-date">Posted on <?php the_date(); ?>
                    <?php the_excerpt(); ?>
                <?php endwhile; ?>
                <?php endif; ?>

                <div id="more-posts">
                    <div class="previous-link"><?php previous_posts_link("< previous news") ?></div><div class="next-link"><?php next_posts_link ("more news >") ?></div>
                </div>
             </div>
    </div><!-- #content -->
    </div><!-- #primary -->

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

当您执行像这样的自定义查询时,您必须进行一些“黑客”操作才能使分页正常工作。

更改此项:

<?php 
query_posts( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); 
?>
。。。到aWP_Query 电话:

<?php 
$news_query = new WP_Query( "category_name=news&orderby=date&order=ASC&posts_per_page=2" ); 
?>
然后,您需要*将自定义查询对象移动到$wp_query 全局`:

// Move $wp_query into a temp holder
$temp = $wp_query;
// Nullify the global object
$wp_query = null;
// Now move your custom query into the 
$wp_query = $news_query;
然后,从以下位置更新循环启动:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
。。。对此:

<?php if ( $news_query->have_posts() ) : while ( $news_query->have_posts() ) : $news_query->the_post(); ?>
这将导致分页按预期工作。

当您关闭循环时:

<?php endwhile; ?>
<?php endif; ?>
。。。只需恢复原始$wp_query 全球:

<?php endwhile; ?>
<?php endif; ?>
<?php $wp_query = $temp; ?>
你应该准备好了。

结束