【问题标题】:Previous / Next page link using wp_query loop使用 wp_query 循环的上一页/下一页链接
【发布时间】:2012-05-02 18:15:08
【问题描述】:

我正在开发一个 wordpress 网站,该网站有一个名为“plops”的自定义帖子类型。我只想在网站中使用这种自定义帖子类型。所以在 index.php 中,我使用 WP_Query 循环,这里是代码:

<?php 
$args = array( 'post_type' => 'plops', 'posts_per_page' => 30, 'orderby' => 'desc');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$meta = get_post_meta($post->ID);
?> 
// my template for the post...

<?php endwhile; ?>

问题是我想实现一个无限滚动到这个页面,为此我需要有分页链接。我试图用next_posts_link() 函数来实现那些,但不能让它工作! 它只是不会显示任何链接,我尝试了很多东西,似乎没有任何效果......

如果我访问 mysite.com/worpress/page/2,我的帖子会显示,但我在 firebug 中得到 404...奇怪...

有什么想法吗?非常感谢帮助!提前非常感谢!

【问题讨论】:

  • 使用 next_posts_link() 会发生什么? codex.wordpress.org/Function_Reference/next_posts_link
  • 您是否检查过您的 $label 或 $max_pages 变量是否无效?
  • 我没有在函数中传递任何参数,让它处于默认状态。而且它不会解释/page/2/上的404 ...
  • 尽管它们可能相关,但最好将它们视为两个独立的问题。不幸的是,我对 next_posts_link() 一无所知,所以这个问题可能看起来很愚蠢,但对于第一个问题:你有足够的帖子来实际制作第二页吗?对于第二个问题,firebug 给你一个 404 的页面是什么?只有在您请求页面时才能获得 404,因此您应该能够找到它正在为其抛出 404 的页面的 URL。
  • 正如我所说,404 是用于mysite.com/wordpress/page/2/,但即使我输入了相同的网址,它仍然会显示帖子!这就是为什么我觉得这很奇怪......是的,我有足够的帖子

标签: php wordpress loops


【解决方案1】:

以下修复可能会对您有所帮助 - 这对我有用。它将 Chris Coyier 的解决方案与 cmets 中的一些帮助相结合。 CSS Tricks Article

//Fix homepage pagination
if ( get_query_var('paged') ) {
    $paged = get_query_var('paged');
} else if ( get_query_var('page') ) {
    $paged = get_query_var('page');
} else {
    $paged = 1;
}

$args = array('post_type' => 'custom_post_type', 'paged' => $paged );

$temp = $wp_query; 
$wp_query = null; 
$wp_query = new WP_Query(); 
$wp_query->query( $args ); 

while($wp_query->have_posts()) : $wp_query->the_post(); 
?>

  <!-- LOOP: Usual Post Template Stuff Here-->

<?php endwhile; ?>

<nav>
    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>
</nav>

<?php 
  $wp_query = null; 
  $wp_query = $temp;  // Reset
?>

【讨论】:

    【解决方案2】:

    这个问题已经很久没有发布了,但是对于任何正在寻找一种方法来在他/她自己的代码中实现这一点的人来说:

    $args = array( 'post_type' => 'plops', 'posts_per_page' => 30, 'order' => 'desc');
    $loop = new WP_Query( $args );
    
    while ( $loop->have_posts() ) {
        $loop->the_post();
        $meta = get_post_meta($post->ID);
        // my template for the post...
    }
    
    previous_posts_link('&laquo; Newer');
    next_posts_link('Older &raquo;', $loop->max_num_pages);
    
    wp_reset_postdata();
    

    注意:您只需将最大页数传递给next_posts_link 函数即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2020-12-22
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多