1

在我的自定义主题的自定义页面模板上,我有以下查询。当我这样做时,分页正在工作:

 $myqueryname = $wp_query;
 $mypost_args = array( 'post_type' => 'friends', 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page' => 4, 'paged' => $paged);
 $wp_query = new WP_Query($mypost_args);
 while ( $wp_query->have_posts() ) : $wp_query->the_post();

    Some html.....

 endwhile;

 previous_posts_link('Prev');
 next_posts_link('Next');

但是当我使用这种方式时,分页不起作用:

$mypost_args = array( 'post_type' => 'friends', 'orderby' => 'title', 'order' => 'ASC');
$loop = new WP_Query( $mypost_args );
while ( $loop->have_posts() ) : $loop->the_post();
         Some html.....

endwhile;

previous_posts_link('Prev');
next_posts_link('Next');
wp_reset_query();

我想知道为什么会这样?有什么区别 ?抱歉,如果我的问题含糊不清,但这将帮助我更好地理解 wordpress 的工作方式,而不仅仅是从论坛复制粘贴代码。

先谢谢了。

4

1 回答 1

1

如果您查看get_next_posts_link (调用函数)的代码next_posts_link,它具有以下代码:

global $paged, $wp_query;

if ( !$max_page )
    $max_page = $wp_query->max_num_pages;
...

这就是next_posts_link的用法

 <?php next_posts_link( $label , $max_pages ); ?> 

在我看来,当您使用自定义查询时,您需要指定$max_pages分页才能工作。

尝试将您的分页代码修改为:

previous_posts_link('Prev', $loop->max_num_pages);
next_posts_link('Next', $loop->max_num_pages);
于 2013-05-19T14:05:52.663 回答