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

为文章创建归档页面:自定义主题下博客归档路径配置求助

改进建议与解决方案

针对你遇到的博客归档页面及permalink路径问题,以下是具体改进方案:

1. 修正博客文章列表查询逻辑

当前模板代码循环的是自定义页面本身的内容,而非全站博客文章。需要替换查询逻辑,使用WP_Query获取所有博客文章:

<?php
/**
 * page-blog.php
 * Template Name: Blog Home
 * Template Post Type: page
 */

get_header();

// 自定义博客文章查询
$blog_query = new WP_Query(array(
    'post_type' => 'post',
    'posts_per_page' => get_option('posts_per_page'), // 沿用后台设置的每页文章数
    'paged' => get_query_var('paged') ?: 1, // 支持分页
));

if ($blog_query->have_posts()) :
    // 循环输出博客文章
    while ($blog_query->have_posts()) : $blog_query->the_post();
        get_template_part('components/grid', get_post_format());
    endwhile;

    // 添加分页导航
    the_posts_pagination(array(
        'mid_size' => 2,
        'prev_text' => __('上一页', 'your-theme-text-domain'),
        'next_text' => __('下一页', 'your-theme-text-domain'),
    ));
else :
    // 无文章时的提示
    echo '<p>' . __('暂无博客文章', 'your-theme-text-domain') . '</p>';
endif;

// 重置主查询
wp_reset_postdata();

get_footer();

2. 统一全站博客路径规则

要让单篇文章、分类/标签归档都统一在/blog/路径下,需调整固定链接与重写规则:

  • 设置固定链接结构:进入后台「设置」→「固定链接」,将自定义结构改为:
    /blog/%postname%/
    
  • 调整分类/标签归档路径:在主题的functions.php中添加重写规则,让分类归档路径变为/blog/category/分类名/,标签归档变为/blog/tag/标签名/:
    // 重写分类归档路径
    function custom_category_rewrite_rule() {
        add_rewrite_rule(
            'blog/category/([^/]+)/?$',
            'index.php?category_name=$matches[1]',
            'top'
        );
    }
    add_action('init', 'custom_category_rewrite_rule');
    
    // 重写标签归档路径
    function custom_tag_rewrite_rule() {
        add_rewrite_rule(
            'blog/tag/([^/]+)/?$',
            'index.php?tag=$matches[1]',
            'top'
        );
    }
    add_action('init', 'custom_tag_rewrite_rule');
    

3. 刷新重写规则

修改固定链接或添加自定义重写规则后,必须进入后台「设置」→「固定链接」页面,无需修改任何内容,直接点击「保存更改」,确保WordPress生成新的重写规则,避免出现404错误。

4. 模板兼容性优化

  • 如果你的components/grid组件依赖主查询的全局变量,上述代码中wp_reset_postdata()已确保不会干扰后续模板逻辑;
  • 若不需要区分文章格式(get_post_format()),可简化为get_template_part('components/grid'),减少不必要的判断;
  • 建议为模板添加语义化的HTML结构(比如包裹文章列表的<div class="blog-posts">容器),便于样式开发。

内容的提问来源于stack exchange,提问作者Putra Fajar Hasanuddin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:54:22