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

如何在WordPress中按年、月层级显示侧边栏Archives小部件?

实现按年分组的归档显示(带可点击月份链接)

没问题,我来帮你搞定这个归档显示的需求!要把默认的线性归档改成按年分组、月份可点击的格式,你需要对主题的sidebar.php文件做以下操作:

第一步:备份文件

先找到你当前使用主题的sidebar.php文件(一般在wp-content/themes/你的主题名/目录下),复制一份备份,防止修改出错后可以快速恢复。

第二步:替换默认归档代码

如果你的侧边栏是通过后台小部件添加的默认Archives组件,先登录WordPress后台,进入「外观」→「小部件」,把侧边栏里的默认Archives小部件移除。

然后打开sidebar.php,找到你希望显示归档的位置(比如原来小部件所在的区域),添加以下自定义代码:

<!-- 自定义按年分组归档 -->
<div class="widget widget_archive">
    <h3 class="widget-title">Archives</h3>
    <ul>
    <?php
    // 获取所有包含已发布文章的年份,按时间倒序排列
    $years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC");
    
    // 循环遍历每个年份
    foreach ($years as $year) :
    ?>
        <li>
            <strong><?php echo esc_html($year); ?></strong>
            <ul>
                <?php
                // 获取当前年份下有已发布文章的月份,按时间倒序排列
                $months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND YEAR(post_date) = $year ORDER BY post_date DESC");
                
                // 循环遍历每个月份
                foreach ($months as $month) :
                    // 转换为月份英文全称(比如March)
                    $month_name = date('F', mktime(0, 0, 0, $month, 1, $year));
                    // 获取该月份的归档链接
                    $archive_url = get_month_link($year, $month);
                ?>
                    <li><a href="<?php echo esc_url($archive_url); ?>"><?php echo esc_html($month_name); ?></a></li>
                <?php endforeach; ?>
            </ul>
        </li>
    <?php endforeach; ?>
    </ul>
</div>

代码说明

  • 这段代码会先查询所有有已发布文章的年份,按从新到旧排序;
  • 每个年份下会列出对应有文章的月份,同样按从新到旧排列;
  • 月份会显示为英文全称(符合你要的March/February格式),并且是可点击的归档链接;
  • esc_html()和esc_url()是WordPress的安全函数,用来防止XSS攻击,确保输出内容安全。

第三步:测试效果

保存sidebar.php文件后,刷新你的网站前端,就能看到按年分组、月份可点击的归档效果了。如果样式和你的主题不匹配,你可以调整代码里的class属性(比如widget、widget-title),和主题现有小部件的class保持一致,就能继承主题的样式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:02