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

如何让WordPress自定义分类短码函数实现复用?

动态传入分类参数的WordPress短码修改方案

核心修改思路

让短码回调函数接收并处理传入的category属性,将固定的分类别名替换为动态参数值,实现一个短码适配所有分类的需求。

修改后的完整代码

替换你当前functions.php中的短码代码为以下内容:

function display_category_blogs($atts) {
    // 定义短码参数及默认值
    $atts = shortcode_atts(
        array(
            'category' => '',
            'posts_per_page' => 5 // 可根据需求调整默认显示数量
        ),
        $atts,
        'blogs'
    );

    // 校验参数:未传入分类时返回提示
    if (empty($atts['category'])) {
        return '<p>请指定分类别名,示例:[blogs category="day-trips"]</p>';
    }

    // 构建动态查询参数
    $args = array(
        'category_name' => $atts['category'],
        'posts_per_page' => $atts['posts_per_page'],
        'post_status' => 'publish'
    );

    $query = new WP_Query($args);
    $output = '';

    if ($query->have_posts()) {
        $output .= '<div class="blog-list">';
        while ($query->have_posts()) {
            $query->the_post();
            // 这里的HTML结构可根据你原有代码调整
            $output .= '<div class="blog-item">';
            $output .= '<h3><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></h3>';
            $output .= '<p>' . esc_html(get_the_excerpt()) . '</p>';
            $output .= '</div>';
        }
        $output .= '</div>';
        wp_reset_postdata(); // 恢复全局文章数据
    } else {
        $output .= '<p>「' . esc_html($atts['category']) . '」分类下暂无文章</p>';
    }

    return $output;
}
add_shortcode('blogs', 'display_category_blogs');

关键修改点

  • 回调函数新增$atts参数:用于接收短码传入的所有属性
  • 使用shortcode_atts()设定默认值:确保参数缺失时代码仍能正常运行
  • 动态替换category_name值:将原固定的'day-trips'替换为$atts['category'],实现分类动态切换
  • 增加安全转义:用esc_url()、esc_html()处理输出内容,避免XSS安全风险
  • 参数校验:未传入分类时返回友好提示,提升使用体验

使用方法

在文章或页面中直接调用短码,传入目标分类的**别名(slug)**即可:

  • 展示Day Trips分类:[blogs category="day-trips"]
  • 展示Recipes分类:[blogs category="recipes"]
  • 自定义显示数量:[blogs category="recipes" posts_per_page="10"]

注意事项

  • 必须传入分类的别名(slug),而非分类的中文/英文名称,category_name参数仅识别分类slug
  • 保留wp_reset_postdata():避免自定义查询影响后续全局文章数据的调用
  • 可根据原有短码的HTML结构调整输出部分的代码,保持样式一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:42:34