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

如何用WP Query按日期分组展示日期及对应文章?

按日期分组展示文章的WP Query实现方案

嘿,刚好我之前做过类似的需求,就是把文章按发布日期分组展示,每个日期下列出当天的所有文章。用WP Query完全可以搞定,给你分享具体的实现步骤和代码:

核心思路

  1. 先用WP Query获取目标文章集合,按发布日期排序
  2. 循环遍历文章时,记录当前遍历到的日期,当日期发生变化时,输出日期分隔栏
  3. 同一日期下的文章统一放在该日期栏下方

完整代码示例

<?php
// 设置WP Query参数,这里可以根据你的需求调整(比如文章类型、数量等)
$args = array(
    'post_type'      => 'post', // 目标文章类型,默认是post,也可以自定义类型
    'posts_per_page' => -1, // 显示所有文章,也可以设置具体数字
    'orderby'        => 'date',
    'order'          => 'ASC', // 按日期升序排列,和你的示例顺序一致
    'post_status'    => 'publish' // 只显示已发布的文章
);

$custom_query = new WP_Query($args);

// 初始化变量,用于跟踪当前日期
$current_date = '';

if ($custom_query->have_posts()) :
    while ($custom_query->have_posts()) : $custom_query->the_post();
        // 获取当前文章的日期,格式和你的示例匹配:年-月-日 星期
        $post_date = get_the_date('Y年n月j日 l');
        
        // 如果当前日期和之前记录的日期不同,输出日期分隔栏
        if ($post_date !== $current_date) {
            // 更新当前日期变量
            $current_date = $post_date;
            echo '<h3>-- ' . $current_date . ' --</h3>';
        }
        
        // 输出文章标题(可以改成你需要的展示格式,比如直接文本或带链接)
        echo '<p>' . get_the_title() . '</p>';
    endwhile;
    // 重置查询,避免影响后续的WP循环
    wp_reset_postdata();
else :
    // 如果没有文章,显示提示
    echo '<p>暂无文章</p>';
endif;
?>

关键细节说明

  • 日期格式:get_the_date()里的格式参数Y年n月j日 l,其中Y是4位年份,n是不带前导零的月份,j是不带前导零的日期,l是完整的星期名称(比如星期一),你可以根据需要调整格式。
  • 排序方式:示例里用了order => 'ASC'是按日期从早到晚排列,如果需要最新的日期在前,改成order => 'DESC'即可。
  • 文章筛选:你可以在$args里添加更多参数,比如category_name指定分类,或者meta_query做自定义字段筛选,完全根据你的需求调整。

这样就能实现你想要的“日期分隔栏+当日文章列表”的展示效果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:21:24