【问题标题】:Wordpress pagination (next_posts_link) on custom wp_query not showing自定义 wp_query 上的 Wordpress 分页(next_posts_link)未显示
【发布时间】:2012-12-31 03:08:17
【问题描述】:

有人问过类似的问题,但我不知道我错过了什么!

我有一个用于自定义类型字段的静态页面,类似于常规存档或类别页面,但我无法使分页正常工作。
如果我手动转到第 2 页(即添加到链接 .../page/2)我会得到“较新的帖子”链接,但在第一页上不是对于老年人! next_posts_link() 似乎不存在(没有注入 div 或任何东西)

这是我的代码:

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

  $query_args = array (
        'post_type' => 'bb_articoli',
        'meta_key' => 'bb_data-pubblicazione',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'posts_per_page' => 2,      //for testing purposes
        'paged' => $paged,
        'meta_query' => array(
            array('key' => 'bb_fonte-pubblicazione',
                  'value' => 2,
                  'compare' => '='
                  )
        )
  );

  $query = new WP_Query($query_args);

    if ( $query->have_posts() ) :
       while ( $query->have_posts()) :
             $query->the_post();
             get_template_part( 'content' , get_post_format());
       endwhile;

     next_posts_link();
     previous_posts_link();

     else :
         get_template_part( 'content', 'none' );
 endif;

非常感谢任何帮助。谢谢

仅供参考:在 22 日使用子主题

【问题讨论】:

    标签: wordpress pagination


    【解决方案1】:

    您的解决方案有效的原因是您覆盖了全局 $wp_query 变量。更好的解决方案是将 $query->max_num_pages 添加到 next_posts_link()。

    next_posts_link('« Older Entries', $query->max_num_pages)
    

    其中 $query 是您新创建的对象的名称。这样您就可以保留 $wp_query。

    【讨论】:

    • 这是我的解决方案。
    【解决方案2】:

    好的,想通了,分享给大家参考:

    由于某些未知原因,next_posts_link() 和 previous_posts_link() 仅在查询对象被称为 $wp_query! 时才能正常工作!

    因此,相应地更改您的查询对象可以使整个工作正常:

    $wp_query = new WP_Query($query_args);
    
    if ( $wp_query->have_posts() ) :
       while ( $wp_query->have_posts()) :
             $wp_query->the_post();
               // do something
       endwhile;
    
     next_posts_link();
     previous_posts_link();
    

    对我有用,但我没有彻底测试过。据我所知,这在任何地方都没有记录,当然也没有在法典中。找到答案here in comment 4 by madhavaji

    干杯

    【讨论】:

    【解决方案3】:

    我有同样的问题。我尝试了所有解决方案,但没有一个对我有帮助。

    所以对于那些无法用上面的解决方案解决这个问题的人,我已经做了:

    <?php
        global $wp_query, $paged;
    
        if( get_query_var('paged') ) {
            $paged = get_query_var('paged');
        }else if ( get_query_var('page') ) {
            $paged = get_query_var('page');
        }else{
            $paged = 1;
        }
    
        $wp_query = null;
        $args = array(
            'post_type' => array("fashion", "tv", "sport"),
            'orderby'=>'date',
            'order'=>'DESC',
            'posts_per_page' => 5,
            'paged' => $paged
        );
        $wp_query = new WP_Query();
        $wp_query->query( $args );
    
        while ($wp_query->have_posts()) : $wp_query->the_post();
            /* YOUR CONTENT HERE */
        endwhile;
    
        next_posts_link('next');
        previous_posts_link('previous');
    
        wp_reset_query();
    ?>
    

    重要事情是用全局变量开始你的代码,因为next_posts_link()previous_posts_link() 函数正在读取global $paged$wp_query 值。

    希望能帮到你!

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 2017-07-20
      • 2013-09-29
      • 2013-01-13
      • 2017-12-16
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多