You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义文章类型归档页显示数量调整及后台显示异常问题

我来帮你搞定这个问题!你遇到的情况是因为修改posts_per_page的时候没有限定生效场景,导致后台的文章列表查询也被意外影响了。咱们只需要给查询添加精准的条件判断,只针对前台的自定义文章类型归档页生效,同时保证分页逻辑正常运行。

解决方案步骤

1. 用pre_get_posts钩子做精准修改

替换掉你之前全局修改的代码,在主题的functions.php里添加这段代码:

add_action('pre_get_posts', 'custom_cpt_archive_posts_per_page');
function custom_cpt_archive_posts_per_page($query) {
    // 仅对前台、主查询、且是目标自定义文章类型归档页生效
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('你的自定义文章类型slug')) {
        $query->set('posts_per_page', 6);
    }
    return $query;
}

记得把代码里的你的自定义文章类型slug替换成你实际创建的自定义文章类型标识(比如你注册的是portfolio就填这个)。

2. 确保分页逻辑适配新的显示数量

如果你已经在归档页加了分页代码,要确认它是基于当前查询的参数生成的。推荐用这样的分页代码来适配:

global $wp_query;
$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')),
    'total' => $wp_query->max_num_pages,
    'prev_text' => __('上一页'),
    'next_text' => __('下一页')
));

这段代码会自动根据你设置的6篇/页来计算总页数,不会出现分页失效的问题。

为什么之前的方法会影响后台?

如果直接全局设置posts_per_page,或者在pre_get_posts钩子中没加!is_admin()的判断,WordPress后台的文章列表查询也会继承这个修改。加上!is_admin()就把调整范围限定在了前台,后台会保持默认的文章显示数量(通常是20篇)。

内容的提问来源于stack exchange,提问作者Crashy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:03:39