登录
如何动态更改 WordPress 中每页的帖子数
P粉256487077
P粉256487077 2023-09-02 09:13:54
0
1
354

我想更改我的 WordPress 网站上某些页面上显示的帖子数量。

我在这里找到了以下代码片段:

$postsPage = $settings["postspage"]; query_posts('posts_per_page='.$postsPage);

之前调用 if (have_posts()) while (have_posts()) the_post()

我对 php 很不熟悉,但我正在尝试的是这样的

... if ( is_front_page()) { $postsPage = $settings["postspage"] + 1; }elseif ( is_tag()) { $postsPage = $settings["postspage"] - 2; } else { $postsPage = $settings["postspage"]; } query_posts('posts_per_page='.$postsPage); ...

但不幸的是它不起作用。相反,它只返回首页的 1 篇文章,而不是 WP 菜单中设置的 5 篇文章 + 1。我可以对所需的值进行硬编码,例如$postPage = 6; for is_front_page 并且它可以正常工作。 由于某些原因,我无法从 $settings["postspage"] 给出的值中添加/减去任何内容。如果我不更改值(else-clause),它也可以工作。我错过了什么?

我已经尝试将 $settings["postspage"] 的值转换为整数,因为我认为它可能会作为字符串返回。我使用: $postsPage = (int)$settings["postspage"] + 1;$postsPage = intval($settings["postspage"]) + 1;但没有成功。由于我不太熟悉 wordpress 函数及其变量,因此我一直在寻找为什么无法修改帖子数量的原因。 我很感激任何提示!

P粉256487077
P粉256487077

全部回复 (1)
P粉153503989

目前尚不清楚您将该代码放在哪里,以及如何找到$settings,但这应该可行。

add_action( 'pre_get_posts', 'alter_number_of_posts' ); function alter_number_of_posts( $query ) { if ( !$query->is_main_query() ){ return; } $posts_per_page = get_option( 'posts_per_page' ); if ( is_front_page() ) { $query->set( 'posts_per_page', $posts_per_page + 1 ); return; } if ( is_tag() ) { $query->set( 'posts_per_page', $posts_per_page - 2 ); return; } }

$query通过引用传递,因此您对其所做的任何更改都将反映在全局查询对象中。您不需要返回它,这意味着您可以安全地从每个条件内的函数返回,而不是使用elseif

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!