限制只在主页上发布帖子-理想情况下是在unctions.php

时间:2020-08-01 作者:Lori L

我想限制我的主页上显示的帖子数量为3篇,但其他所有的归档、分类、分页页面等都是我在;“阅读”;Wordpress仪表板中的设置。

是否有一种很好的方法可以在函数中实现这一点。php?

我尝试了以下方法,将主页上的帖子限制为3篇,但它也会创建到每个页面都有3篇帖子的分页链接。

    add_action( \'pre_get_posts\',  \'change_posts_number_home_page\'  );
function change_posts_number_home_page( $query ) {

if ($query->is_home() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\', 3 );

return $query;
}
提前感谢!

1 个回复
SO网友:mozboz

所以这有点老套,但它相对干净地实现了您想要的,而无需更改主题,这大概就是想要在函数中实现它的目的。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查询内部,因此并不理想} 在ifreturn 在那里

相关推荐

static array on functions.php

在函数中。php中,我想访问数据库一次,以获取一个ACF对象,然后在本地“保存”它,以防止对数据库的进一步请求。我想首先在“init”钩子中调用以下函数。然后,假设,当我在以后的挂钩上调用它时,由于使用了“static”关键字,$current\\u store var已经设置好了,函数将在第一个“if”返回已经保存的静态var时停止。它不起作用-当访问稍后挂钩上的函数时,“isset($current\\u store)”返回false。我做错了什么?function get_current_store