4

有人问过类似的问题,但我无法弄清楚我想念什么!

我有一个自定义类型字段的静态页面,类似于常规存档或类别页面,但我无法使分页工作。
如果我手动转到第 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 日使用儿童主题

4

3 回答 3

15

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

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

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

于 2013-03-22T10:19:57.517 回答
9

好的,想通了,所以想分享以供将来参考:

由于某些未知原因 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();

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

干杯

于 2013-01-17T16:51:56.377 回答
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()andprevious_posts_link()函数正在读取global $pagedand$wp_query值。

我希望我能帮上忙!

于 2014-01-03T14:11:22.623 回答