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

WordPress自定义文章类型分类页面无法显示全部文章求助

问题解决方法

核心问题

你当前的pre_get_posts函数只针对了自定义文章类型的归档页(is_post_type_archive('trial')),但你访问的是自定义分类法trial-category的归档页面,这个条件不触发,所以查询还是用了WordPress默认的10篇文章限制,完全忽略了你在「设置>阅读」里的50篇设置。

修正后的函数

把你的spigot_show_all_work函数替换成下面的代码,同时覆盖CPT归档页和自定义分类页的查询:

add_action( 'pre_get_posts', 'spigot_show_all_work' );
function spigot_show_all_work( $query ) {   
    if ( ! is_admin() && $query->is_main_query() ) {    
        // 匹配trial的CPT归档页,以及trial-category分类法的归档页
        if ( is_post_type_archive( 'trial' ) || is_tax( 'trial-category' ) ) {
            $query->set('posts_per_page', -1 ); // 显示所有文章
            // 要是想固定显示50篇,就改成:$query->set('posts_per_page', 50 );
        }
    }
}

额外必做检查

  1. 刷新固定链接:改完代码后,进后台「设置>固定链接」,直接点“保存更改”刷新重写规则,避免permalink缓存导致的异常。
  2. 确认分类关联:检查你的trial文章确实关联到了对应的trial-category分类下,别是未分类或者关联错了分类。
  3. 验证模板生效:确认当前页面用的是taxonomy-trial-category.php模板,可以在模板顶部加一行注释<!-- 当前模板:taxonomy-trial-category.php -->,前端查看源代码确认。

备选方案(不推荐,仅应急用)

如果pre_get_posts方法还是有问题,也可以直接在taxonomy-trial-category.php里替换默认循环为自定义查询,但优先用pre_get_posts(更符合WordPress规范):

<?php
$args = array(
    'post_type' => 'trial',
    'posts_per_page' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'trial-category',
            'field'    => 'slug',
            'terms'    => get_queried_object()->slug,
        ),
    ),
);
$trial_query = new WP_Query( $args );

if ( $trial_query->have_posts() ) : while ( $trial_query->have_posts() ) : $trial_query->the_post(); ?>
    <div class="trial-info">
        <h3><a title="<?php the_title();?>" href="<?php the_permalink();?>"><?php the_title();?></a></h3>
    </div>
<?php endwhile; wp_reset_postdata(); endif; ?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:30:56