使用get_post进行WordPress分页?

时间:2011-10-10 作者:Jason

我需要调整一个写得很糟糕的WP主题(一个在表中编写的自定义主题,以及糟糕的代码)。

该主题有多个自定义模板,但未使用分页,使用get\\u posts代替query\\u posts-

    <?php query_posts(\'showposts=1\'); ?>
    <?php $posts = get_posts(\'numberposts=10&offset=0&category_name=albertsons, carrs, dominicks, genuardis, heb, kroger, pavillions, publix, randalls,safeway,shop-rite,tom-thumb,vons,whole-foods\'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count2 = 0; if ($count2 == "10") { break; } else { ?>

...

    <?php $count2++; } ?>
    <?php endforeach; ?>
我需要获得分页才能使用get\\u posts,或者将函数重写为仅使用query\\u posts,以便添加\'paged\' => get_query_var(\'page\')

当我试图重写为只使用query\\u帖子时,整个该死的东西都坏了。

更新时间:

<?php 
global $wp_query;

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;


query_posts(array(\'posts_per_page\' => \'3\',\'paged\'=>$paged,\'category_name\'=>\'albertsons, carrs, dominicks, genuardis, heb, kroger, pavillions, publix, randalls,safeway,shop-rite,tom-thumb,vons,whole-foods\')); ?>
                    ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
显示循环,但分页不起作用。如果单击“旧帖子”,url将更改为第2页,但内容完全相同。

1 个回复
SO网友:Wyck

这完全是错误的。首先不要使用start_wp(); 我认为这是4年前贬值的。其次,你的循环很混乱,query_posts 是为了改变主回路,也就是不是get_posts.

所以只要用get_postsWP Query.

$args = array( \'numberposts\' => 1, 
               \'offset\'=> 0, 
               \'category_name\' => \'carrs, dominicks, genuardis, etc\', 
                );


$the_query = new WP_Query( $args );

while ( $the_query->have_posts() ) : $the_query->the_post();

$count_posts = $the_query->current_post + 1; // use this to count your posts

//your loop stuff
endwhile;
在“不确定分页方式”中,如果只希望下一个/上一个链接,请使用<?php previous_post(); ?> <?php next_post(); ?> 对于真正编号的分页,我建议使用像WP PageNavi或WP Paginate这样的插件,它可以通过一个函数轻松集成到主题中。

http://codex.wordpress.org/Class_Reference/WP_Query
http://codex.wordpress.org/Next_and_Previous_Links

结束

相关推荐

Pagination with custom loop

我的问题可能是Pagination not working with custom loop, 但有一种不同。我使用自定义循环来显示flash游戏。我想按类别在游戏页面上分页。类别php:<?php if ($cat) { $cols = 2; $rows = 4; $paged = ((\'paged\')) ? get_query_var(\'paged\') : 1; $post_per_page = $cols * $rows; // -1 s