我想有3页,每页30篇帖子:Total 90 posts./page/4/ shouldn\'t exist. 应该是404或重定向到主页。
只应存在/、/第/2页和/第/3页。每个都有30个帖子,就像这样:
我尝试了许多建议,没有一个限制了我的查询。只是每页的帖子数量。这看起来很有希望,但没有任何效果(/页/999/works)
function wpcodex_filter_main_search_post_limits( $limit, $query ) {
if ($query->is_front_page()) {
//this:
return \'90\';
//or even this:
return \'LIMIT 90\';
}
return $limit;
}
add_filter( \'post_limits\', \'wpcodex_filter_main_search_post_limits\', 10, 2 );
一些人建议使用PHP进行计数,并使用if停止显示帖子。这是一个解决方法,我想限制SQL查询。
最合适的回答,由SO网友:Qaisar Feroz 整理而成
尝试使用paginate_links( $args )
. 以下是采用的代码codex.
$paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'paged\' ) ) : 1;
$args = array(
\'posts_per_page\' => 30,
\'paged\' => $paged,
);
$the_query = new WP_Query( $args );
// the loop etc goes here..
$big = 999999999;
echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'current\' => max( 1, get_query_var(\'paged\') ),
\'prev_next\' => false,
\'total\' => 3
) );
请参见此处的详细信息
codex.
SO网友:hamdirizal
您的解决方案不起作用,因为它将当前循环限制为90条记录。It doesn\'t limit the total records.
对于你的问题,你可以paged WordPress执行主循环之前的值。
function override_paged(){
if(get_query_var(\'paged\')>3){
//Cap the value
set_query_var( \'paged\', 3 );
//Or redirect
//wp_safe_redirect(\'HOME_PAGE_URL\');die();
}
}
add_action(\'pre_get_posts\',\'override_paged\');
这个
will affect 所有WordPress查询,请根据您的要求进行调整。