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

WordPress:带分页的自定义文章列表页内容正常但头部显示404标题

解决WordPress自定义归档页分页时标题显示404的问题

你的核心问题是:自定义分类归档页的分页URL触发了WordPress主查询的404判定,尽管自定义查询能正常拉取内容,但主查询的is_404()仍返回true,导致页面标题错误。以下是两种可行的解决方法:

方法1:手动修正主查询状态变量

在模板文件的最顶部(执行自定义查询之前)添加以下代码,强制修改主查询的状态标记,让WordPress识别这是一个有效的归档页而非404页面:

global $wp_query;
// 标记当前页面不是404
$wp_query->is_404 = false;
// 标记为归档页和分类页(根据你的页面类型调整)
$wp_query->is_archive = true;
$wp_query->is_category = true;
// 设置当前分类的对象和ID,确保标题等信息正确
$wp_query->queried_object = get_category($catID);
$wp_query->queried_object_id = $catID;

方法2:替换主查询而非创建新查询

放弃使用new WP_Query,直接修改主查询的参数,让主查询执行你需要的分类文章查询。这样主查询会正确识别分页URL,不会触发404判定:

global $wp_query;
$paged = (get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
    'posts_per_page' => '1',
    'paged' => $paged,
    'post_type' => 'post',
    'post_status' => 'publish',
    'tax_query' => array(
        array(
           'taxonomy' => 'category',
           'field'    => 'term_id',
           'terms'    => $catID,
           ),
        ),
        'orderby' => array('title'=>'ASC'),
     );
// 替换主查询的参数并执行
$wp_query->query($args);

// 后续循环可以直接使用默认的WordPress循环结构
if ( $wp_query->have_posts() ) :
    while ( $wp_query->have_posts() ) : $wp_query->the_post();
        // 输出文章内容
        the_title();
        the_content();
    endwhile;
endif;

// 分页代码保持不变
$total_pages = $wp_query->max_num_pages;
if($total_pages>1){
     $current_page = max(1, get_query_var('paged'));

     $page = paginate_links(array(
          'base' => get_pagenum_link(1) . '%_%',
          'format' => 'page/%#%/',
          'current' => $current_page,
          'total' => $total_pages,
          'prev_text'    => __('« '),
          'next_text'    => __(' »'),
          'type' => 'list',
          'add_args'  => array(),
      ));
               
      echo $page;
}

// 重置文章数据
wp_reset_postdata();

原因说明

WordPress的页面标题、状态判断依赖于**主查询($wp_query)**的结果。你之前使用new WP_Query创建了独立的自定义查询,但主查询仍会尝试匹配当前URL,由于分页URL(如/page/2/)没有对应默认的页面或归档规则,主查询会标记is_404为true,从而导致标题显示错误。上述两种方法都是通过修正主查询的状态或行为,让WordPress正确识别当前页面的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:51:15