1

所以我创建了专门的页面模板,在这个页面上我想列出最近的 3 篇博客文章,并使用通常的分页链接将用户带到上一篇或下一篇 3 篇文章。

我填充了列表,并且出现了链接,但是当我单击上一个或下一个链接时,我只会得到与以前相同的 3 个帖子。我可以看到 URL 更改(/blog/page/2),但显示的帖子始终是最近的三个。

更新。在变得非常沮丧之后,我决定让事情回归基础。下面的代码片段是我模板中唯一的代码,只是为了基本上隔离循环,这个仍然没有修复它。我得到的只是页面上的单个帖子,但是如果我在 url 末尾手动键入 /page/2 ,它会将我带到第 2 页并显示不同的帖子。但是,我看到的与分页有关的唯一链接是“较新的帖子”(仅出现在第 2 页上)。为什么“旧”帖子没有出现?

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'orderby'       => 'post_date',
    'order'         => 'DESC',
    'post_type'     => 'post',
    'post_status'       => 'publish',
    'posts_per_page'    => 1,
    'paged'         => $paged,
);

$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post);
?>

<article>
    <h2 class="fnt25 noBtmMarg"><a href="<?php echo get_permalink(); ?>" title="Read: <?php the_title(); ?>"><?php the_title(); ?></a></h2>
    <div class="meta fnt18 pMarginBottom">Posted on: <?php the_date(); ?></div>

    <div class="fnt22"><?php print_custom_field('listingDesc'); ?></div>

    <a href="<?php echo get_permalink(); ?>" class="floatRight fnt22" title="Read the full article: <?php the_title(); ?>">Read more...</a>
    <div class="clearfix"></div>

</article>
<?php endforeach; ?>

<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
4

2 回答 2

1

好的。在自己做了一些研究之后,似乎这query_posts()不是这种情况的最佳选择。使用get_posts(),也阅读一下。

一个很好的例子(编辑:更好的描述):

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'orderby'       => 'post_date',
    'order'         => 'DESC',
    'post_type'     => 'post',
    'post_status'       => 'publish',
    'posts_per_page'    => 3,
    'paged'         => $paged,
);

$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post);
?>
于 2013-09-25T20:59:49.360 回答
0
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; // setup pagination

    $the_query = new WP_Query( array( 
        'post_type' => 'post',
        'paged' => $paged,
        'post_status' => 'publish',
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => 1) 
    );

    while ( $the_query->have_posts() ) : $the_query->the_post();
        echo '<div>' . get_the_title() . '</div>';
              the_content();
    endwhile;


    echo '<nav>';
    echo  '<div class="nav-previous alignleft">'.get_next_posts_link('Older posts', $the_query->max_num_pages).'</div>'; //Older Link using max_num_pages
    echo  '<div class="nav-next alignright">'.get_previous_posts_link('Newer posts', $the_query->max_num_pages).'</div>'; //Newer Link using max_num_pages
    echo "</nav>";


    wp_reset_postdata(); // Rest Data

请检查上面的代码好吗?

于 2016-06-20T09:01:40.973 回答