1

我正在使用专门的页面模板来显示帖子列表。我为此使用以下代码:

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'paged' => $paged
);
$all_posts = get_posts($args); 
?>

<?php foreach ( $all_posts as $post ) : setup_postdata( $post );  ?>
/* the loop */
<?php endforeach; ?>

现在我想在它下面放置“Newer Posts”和“Older Posts”链接。next_posts_link()previous_posts_link()在这里打印任何内容。如何在此页面上添加这两个链接?

4

3 回答 3

0

从法典

next_posts_link()并且previous_posts_link()不能在自定义页面模板中作为静态页面使用

有关详细信息,请参阅codex

这些功能不适用于静态页面

于 2013-08-23T08:22:02.180 回答
0

使用下面的代码

<?php next_posts_link( __( '&laquo; Older posts' ) ); ?>
<?php previous_posts_link( __( 'Newer posts &raquo;' ) ); ?>
于 2013-08-23T05:56:24.577 回答
0

您可以使用 模拟它WP_Query,因为它包含max_num_pages属性。如果$paged等于 1,我们不打印previous链接。如果它等于max_num_pages,我们不打印next链接。

链接是根据get_the_permalink()我们在执行循环之前抓取的内容构建的。您必须调整您的永久链接结构,检查代码注释。

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$this_page = get_permalink();
$previous = $paged - 1;
$next = $paged + 1;

$args = array(
    'posts_per_page' => 5,
    'paged' => $paged
);
$the_query = new WP_Query( $args );

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

    if( $paged != 1 ) 
    {
        // DEFAULT PERMALINKS
        # echo "<a href='$this_page&paged=$previous'>previous</a>";
        // PRETTY PERMALINKS
        echo "<a href='{$this_page}page/$previous/'>previous</a>";
    }

    if( $paged != 1 && $paged != $the_query->max_num_pages ) 
    {   
        // SEPARATOR
        echo ' | ';
    }

    if( $paged != $the_query->max_num_pages ) 
    {
        // DEFAULT PERMALINKS
        # echo "<a href='$this_page&paged=$next'>next</a>";
        // PRETTY PERMALINKS
        echo "<a href='{$this_page}page/$next/'>next</a>";
    }

endif;

找到这篇文章,Next/Previous Post Navigation Outside the WordPress Loop,虽然没有帮助,但我将留在这里作为参考。

于 2013-08-23T12:54:02.967 回答