Filve.php中的分页问题

时间:2013-07-29 作者:Fran

当我想按页面限制帖子时,我无法在wordpress的归档文件中获得良好的分页效果,如果我允许从后端默认分页为10,我没有问题,但如果我使用此选项,则没有效果

$wp_query->posts_per_page = 5;
if ( have_posts() ) : while ( have_posts() ) : the_post();
例如,在其他页面中,我可以按页面限制帖子,但在存档中,分页总是有问题,或者在某些页面中给出错误404或分页错误,等等

谢谢

2 个回复
SO网友:s_ha_dum

您不应该设置posts_per_page 值,也不应在查询运行后直接设置对象属性。这将导致对象数据与自身不同步。

您需要在启用筛选器的情况下更改该值pre_get_posts.

function pregp_archive_ppp_wpse_108225($qry) {
  if ($qry->is_main_query() && $qry->is_archive()) {
      $qry->set(\'posts_per_page\',5);
  }
}
add_action(\'pre_get_posts\',\'pregp_archive_ppp_wpse_108225\');
您需要的精确条件可能与上述示例不同。例如,您可能需要:,is_page_template() 而不是is_archive().

SO网友:Tanmay Patel

Method 1: You can use pre_get_posts in your functions file to alter the query. This would go in your theme\'s functions.php file.

function limit_archive_posts( $query ) {
if ( $query->is_archive() && $query->is_main_query() && !is_admin() ) {
        $query->set( \'posts_per_page\', 5);
    }
}
add_action( \'pre_get_posts\', \'limit_archive_posts\' );

Method 2: This can also be achieved by placing the following code before the loop in the archive page.

global $query_string;
query_posts("{$query_string}&posts_per_page=5");

If you have used with custom post type like \'news\' then you can use below code for that.You can use pre_get_posts in your functions file to alter the query. This would go in your theme\'s functions.php file.

function limit_news_archive_post_type( $query ){
    if($query->is_post_type_archive(\'news\') && $query->is_main_query() && !is_admin()){
            $query->set( \'posts_per_page\', 5 );
    }
}
add_action( \'pre_get_posts\', \'limit_news_archive_post_type\' );
结束

相关推荐

Displaying Archives List

我正在使用显示列表或档案<?php get_archives(\'monthly\', \'\', \'html\', \'\', \'\', FALSE); ?> 并显示我的列表2012年12月-2012年11月等但是,我想将其格式化以显示:12.1211.1210.12等有什么想法吗?