所以这有点老套,但它相对干净地实现了您想要的,而无需更改主题,这大概就是想要在函数中实现它的目的。php。
首先,让WP\\u Query像往常一样使用默认分页设置获取所有帖子:
function change_posts_number_home_page( $query ) {
if ($query->is_home() && $query->is_main_query() ) {
$query->set( \'posts_per_page\', -1 );
}
}
add_action( \'pre_get_posts\', \'change_posts_number_home_page\' );
现在添加一个SQL限制,使WP\\u Query只接收3篇帖子,但认为它要求所有帖子,因此a)假设页面长度为3或更多,则不进行分页b)只接收三篇帖子:
function set_wpquery_limit($limits, $wpq) {
if ($wpq->is_home() && $wpq->is_main_query() ) {
return "LIMIT 3";
}
}
add_filter(\'post_limits\', \'set_wpquery_limit\', 10, 2);
备注:
如果出现一个更好的答案,允许您使用更干净的设置关闭分页,那么这将是一种方式,因为这会愚弄WP\\u查询内部,因此并不理想对我来说,在“表示层”中这样做,即主题看起来越来越清晰,但我可以看到,有很多时间你不想这样做,例如,如果创建子主题只是为了调整这一点,那就需要大量的工作这种方法经过测试并正常工作,在二十世纪二十年代主题的干净WP上没有造成任何问题,但是请在您的情况下进行彻底测试您的原始代码具有}
在if
您的原始代码是一个动作挂钩。操作不查看返回值,因此不需要return
在那里