首页 / 中文教程 / 教程

Bricks 用过滤器自定义面包屑(替换 Uncategorized 链接)

Bricks 的 bricks/breadcrumbs/items 过滤器可以程序化修改面包屑输出。例如把单篇文章面包屑里的 /Uncategorized/ 替换成首页链接,附 BricksExtras 面包屑的对应写法。

Ray Chan·2026-08-11·约 1 分钟

需求场景

Bricks 官方群里有用户问:Bricks 的面包屑能不能用 PHP 过滤器自定义?他的具体需求是——文章归档在 Uncategorized(未分类)分类下,面包屑里会显示 Home / Uncategorized / 文章标题,而他想把中间的 /Uncategorized/ 替换成一个指向其他页面(非归档页)的链接。

Bricks 的面包屑元素在输出时会触发一个官方未文档化的过滤器 bricks/breadcrumbs/items,我们可以用它拿到的面包屑项数组做任意修改。

bricks/breadcrumbs/items 过滤器

在子主题 functions.php 或代码片段插件中添加:

add_filter( 'bricks/breadcrumbs/items', function ( array $breadcrumb_items ): array {
  if ( ! is_singular( 'post' ) ) {
    return $breadcrumb_items;
  }

  if ( isset( $breadcrumb_items[1] ) ) {
    $breadcrumb_items[1] = str_replace( 'category/uncategorized/', '', $breadcrumb_items[1] );
  }
  
  return $breadcrumb_items;
});

效果:在前端单篇文章页上,把面包屑里所有 category/uncategorized/ 字符串替换成空字符串——Uncategorized 这个链接的 URL 中 category/uncategorized/ 部分被清掉,剩下的就指向站点首页,视觉上 Uncategorized 变成了“首页”链接。

代码逻辑:

  • is_singular( 'post' ):只在单篇文章页生效,其他页面原样返回(用你自己的条件替换即可,比如只针对某个自定义文章类型);
  • $breadcrumb_items[1]:面包屑数组的第 2 项(索引 1)通常就是“分类”那一项。注意数组的不一定是 0/1/2 连续的,稳妥做法是先 array_values() 重排或遍历检查,原教程按索引 1 处理即可覆盖多数场景;
  • str_replace:字符串替换,只改这一处 URL 片段,不动面包屑其他部分。

BricksExtras 面包屑的写法

如果你用的是 BricksExtras 的 Site Breadcrumbs 元素(作者也推荐它,因为配置项更多),过滤器名不同,逻辑一样:

add_filter( 'bricksextras/breadcrumbs/', function ( array $breadcrumbsFlat ): array {
  if ( ! is_singular( 'post' ) ) {
    return $breadcrumbsFlat;
  }

  if ( isset( $breadcrumbsFlat[1] ) ) {
    $breadcrumbsFlat[1] = str_replace( 'category/uncategorized/', '', $breadcrumbsFlat[1] );
  }
  
  return $breadcrumbsFlat;
});

原理说明

这两个过滤器暴露的都是“面包屑项数组”,每个元素是带 URL 的 HTML 片段或纯文本。修改面包屑本质就是改这个数组:替换字符串、删除某项、插入新项(比如在分类前插入“产品”链接)都是同一个套路。

一个小提醒:如果后台设置里把面包屑的“首页”项文字改了(比如显示站点名),替换后的效果会相应变化;想精确控制,可以打印 $breadcrumb_items 数组(error_log( print_r( $breadcrumb_items, true ) ))先看清结构再动手。

小结

本文是“官方未文档化钩子”的典型用法:Bricks 很多元素内部都有这种隐藏过滤器,bricks/breadcrumbs/items 就是面包屑的修改入口。掌握了“拿数组 → 改数组 → 返回数组”的三步套路,面包屑想怎么定制都行——换分类名、合并层级、给归档链接加参数,全在一个过滤器里解决。

顺带一提:用 BricksExtras 的用户记得用 bricksextras/breadcrumbs/ 这个过滤器名,两个生态的钩子互不相通。

需要帮忙?

用 Bricks 建站?我接客户项目。

从快速营销站到完整的 Bricks 建站,再到从 Elementor 迁移——我都做过。本站每篇教程都来自真实项目经验。告诉我你的需求,一个工作日内回复。

  • Bricks 建站与改版
  • Elementor / Divi → Bricks 迁移
  • Bricks → Astro / headless 性能升级
  • 速度优化,PageSpeed 95+ 目标