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

Gutenberg/WordPress:修改短代码仅展示特定年份的文章

解决按年份分隔展示博客文章的方法

方案1:自定义短代码实现年份筛选

如果原生的ivory/posts-grid短代码不支持year参数,可以自己写一个自定义短代码来实现按年份筛选文章,将以下代码添加到主题的functions.php文件中:

function custom_year_posts_grid($atts) {
    $atts = shortcode_atts(array(
        'year' => date('Y'),
        'category' => '',
        'posts_per_page' => 36,
        'order' => 'desc'
    ), $atts);

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => $atts['posts_per_page'],
        'order' => $atts['order'],
        'date_query' => array(
            array(
                'year' => $atts['year'],
            ),
        ),
    );

    if (!empty($atts['category'])) {
        $args['category__in'] = array($atts['category']);
    }

    $query = new WP_Query($args);
    ob_start();

    if ($query->have_posts()) {
        echo '<h2>' . $atts['year'] . '年文章</h2>';
        echo '<div class="posts-grid">';
        while ($query->have_posts()) {
            $query->the_post();
            // 自定义文章展示结构,可根据需求调整
            echo '<div class="post-item">';
            the_title('<h3><a href="' . get_permalink() . '">', '</a></h3>');
            the_excerpt();
            echo '</div>';
        }
        echo '</div>';
        wp_reset_postdata();
    } else {
        echo '<p>该年份暂无文章</p>';
    }

    return ob_get_clean();
}
add_shortcode('year_posts_grid', 'custom_year_posts_grid');

之后在页面中按年份调用即可,每个年份单独添加一个短代码块:

<!-- wp:shortcode -->
[year_posts_grid year="2020" category="25" posts_per_page="36" order="desc"]
<!-- /wp:shortcode -->

<!-- wp:shortcode -->
[year_posts_grid year="2019" category="25" posts_per_page="36" order="desc"]
<!-- /wp:shortcode -->

方案2:修改Ivory插件的短代码逻辑

如果有权限编辑Ivory插件文件,找到插件中处理posts-grid短代码的核心文件(一般在includes/shortcodes或类似目录下),找到文章查询的参数配置部分,添加对year参数的支持:

// 在查询参数数组前添加以下判断
if (!empty($settings['year'])) {
    $args['date_query'] = array(
        array(
            'year' => $settings['year'],
        ),
    );
}

注意:修改插件文件后要做好备份,避免插件更新时覆盖修改内容。

方案3:检查可视化编辑器的内置筛选

如果是通过Ivory的可视化页面构建器添加的文章网格模块,可能年份筛选是隐藏在UI设置里的,而非直接通过短代码参数设置。打开页面编辑器,找到文章网格模块的设置面板,查看是否有「日期筛选」「年份过滤」类的选项,直接在可视化界面中设置年份即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:33:23