搜索全站
百度SEO 10 分钟阅读

面包屑导航对百度有什么用?WordPress 实现与结构化数据写法

面包屑同时服务层级表达与结果页展现。本文说明百度对面包屑的读取方式、BreadcrumbList 结构化数据的正确写法,以及不用插件的 PHP 实现方案。

U
UFO_PF 2024-08-30 · 阅读 10 分钟
面包 百度SEO
阅读提示
本文约 3,958 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。

很多站点的 URL 明明是三级结构,页面上却只有一个返回首页的链接,用户不知道自己在哪个栏目下,百度也只能靠 URL 猜测层级。另一种情况是主题自带面包屑,但输出的是纯文本 首页 > SEO > 百度SEO,没有结构化数据,百度在结果页里就无法展现那排可点击的层级路径,白白损失了结果页里的额外展示位和点击入口。

原理分析:面包屑给百度传递两类信息

第一类是站内层级关系。面包屑明确告诉爬虫:这个页面属于哪个栏目,栏目属于哪个更大的类目。对于 URL 结构不规范(比如用 ID 或随机字符串做路径)的站点,面包屑几乎是唯一的层级信号来源。

第二类是结果页的展现增强。百度支持 BreadcrumbList 结构化数据,正确标注后,搜索结果里可能用层级路径替代部分 URL 显示,例如”迷忙飞 › 百度SEO › 死链提交”。这种展现比裸 URL 更易读,点击率通常更高。

实现方式 百度可识别层级 结果页增强 维护成本
纯文本面包屑 可(弱) 无 低
微数据 Microdata 可 有 中
JSON-LD 可(推荐) 有 低
无面包屑 仅靠 URL 无 —

推荐用 JSON-LD 输出,因为它不侵入 HTML 结构,改主题时不会破坏标记,也便于在插件之间保持一致。百度搜索资源平台的”结构化数据”模块可以查看站点结构化数据的收录与解析情况,提交后需要等待一段时间才能看到结果。

保姆级实操

步骤1:确认层级定义
一般为「首页 › 分类 › 当前文章」。多层级分类建议只显示直接父级,避免面包屑过长。

步骤2:不用插件输出 JSON-LD
在主题的 functions.php 里挂到 wp_head,按页面类型生成对应数据:

// functions.php:输出 BreadcrumbList 结构化数据(JSON-LD)
add_action( 'wp_head', function() {
    if ( is_front_page() ) {
        return;
    }
    $items = array();
    $pos   = 1;
    $items[] = array(
        '@type'    => 'ListItem',
        'position' => $pos++,
        'name'     => get_bloginfo( 'name' ),
        'item'     => home_url( '/' ),
    );
    if ( is_single() ) {
        $cats = get_the_category();
        if ( $cats ) {
            $cat = $cats[0];
            $items[] = array(
                '@type'    => 'ListItem',
                'position' => $pos++,
                'name'     => $cat->name,
                'item'     => get_category_link( $cat->term_id ),
            );
        }
        $items[] = array(
            '@type'    => 'ListItem',
            'position' => $pos++,
            'name'     => get_the_title(),
        );
    } elseif ( is_category() ) {
        $items[] = array(
            '@type'    => 'ListItem',
            'position' => $pos++,
            'name'     => single_cat_title( '', false ),
        );
    } else {
        return;
    }
    $data = array(
        '@context' => 'https://schema.org',
        '@type'    => 'BreadcrumbList',
        'itemListElement' => $items,
    );
    echo '<script type="application/ld+json">'
        . wp_json_encode( $data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES )
        . '</script>' . "\n";
} );

步骤3:同时输出可见的面包屑 HTML
结构化数据不能替代可见导航,用户看到的层级同样重要:

// 在 single.php / category.php 顶部调用
function mimangfei_breadcrumb_html() {
    $html = '<nav class="breadcrumb" aria-label="面包屑导航">';
    $html .= '<a href="' . esc_url( home_url( '/' ) ) . '">首页</a> › ';
    if ( is_single() ) {
        $cats = get_the_category();
        if ( $cats ) {
            $html .= '<a href="' . esc_url( get_category_link( $cats[0]->term_id ) ) . '">'
                   . esc_html( $cats[0]->name ) . '</a> › ';
        }
        $html .= '<span>' . esc_html( get_the_title() ) . '</span>';
    } elseif ( is_category() ) {
        $html .= '<span>' . esc_html( single_cat_title( '', false ) ) . '</span>';
    }
    $html .= '</nav>';
    echo $html;
}

步骤4:最后一级不加链接
当前页面自身不应是链接,这是结构化数据的规范要求,也避免自链。

步骤5:不要用文章标题以外的词做末级名称
末级 name 应与页面主体一致,写成”正文页”或”详情页”等于没有信息。

步骤6:在搜索资源平台验证
提交站点后,在百度搜索资源平台的”结构化数据”里查看解析状态与生效数量。也可以用百度的结构化数据校验工具粘贴单页 URL 做即时检查。

步骤7:与 URL 结构保持一致
如果 URL 是扁平的 /post-123.html,面包屑却显示三级层级,二者冲突会让百度无所适从。层级表达的一致性同样适用于 分类页与标签页收录策略 里提到的聚合页。

常见踩坑

  1. 只有结构化数据没有可见面包屑:属于标记与页面不符,可能被判定为无效标注。
  2. 末级带链接:规范要求最末一级只有 name,不应给 item。
  3. position 从 0 开始:BreadcrumbList 的 position 应从 1 开始递增。
  4. 多分类时输出多个父级:面包屑会出现分叉,建议只取主分类。
  5. 案例:某站点手工在主题里写了一段 Microdata 面包屑,改主题时新模板没有保留 itemprop 属性,导致结构化数据静默失效半年无人发现,结果页里层级展现全部消失。改用 JSON-LD 集中输出后,不再受模板改动影响。
  6. 与主题自带面包屑重复输出:装了 Rank Math 又自己加一段,页面出现两套 BreadcrumbList,百度可能解析错误。
  7. 面包屑里放关键词堆砌:把末级写成堆词标题,与页面主题不符。

总结

面包屑的最低要求是”用户能看出自己在哪”,进阶要求是”百度能用它做结果页增强”。实现上用 JSON-LD 输出 BreadcrumbList,位置从 1 开始、末级不带 item,同时保留一份可见 HTML。上线后在搜索资源平台的结构化数据模块核对解析结果,避免”写了但没生效”的静默失败。层级清晰之后,配合 站内锚文本建设方法 让栏目页承接类目词,整站的层级表达才算完整。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。