在专业页面模板上获取“较新的帖子”和“较旧的帖子”链接

时间:2013-08-23 05:38:36

标签: wordpress

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

<?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; ?>

现在我想在它下面加上“较新的帖子”和“较旧的帖子”链接。 next_posts_link()previous_posts_link()在此处不打印任何内容。如何在此页面上添加这两个链接?

3 个答案:

答案 0 :(得分:0)

使用以下代码

<?php next_posts_link( __( '&laquo; Older posts' ) ); ?>
<?php previous_posts_link( __( 'Newer posts &raquo;' ) ); ?>

答案 1 :(得分:0)

来自codex

next_posts_link()previous_posts_link()在自定义页面模板中无法作为静态页面使用

有关详细信息,请参阅codex

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

答案 2 :(得分: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 of the WordPress Loop虽然没有帮助,但我会留下来作为参考。