🆕 Bricks 2.4 已发布:查询循环性能提升 40%,迁移教程同步更新 →

首页 / 中文教程 / 教程

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

教程:Bricks 用过滤器自定义面包屑(替换 Uncategorized 链接)——breadcrumbs 附完整代码可直接复用,适合外贸独立站与 WordPress 开发者。

Ray ChanRay Chan·2026-08-11·约 2 分钟
目录
  1. 1.需求场景
  2. 2.bricks/breadcrumbs/items 过滤器
  3. 3.BricksExtras 面包屑的写法
  4. 4.原理说明
  5. 5.小结

需求场景

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 过滤器,可能和主题自带面包屑结构对不上,先确认你用的是 Bricks 面包屑还是别的;二是用 BricksExtras 的面包屑时写法不同,别把本文钩子套到 Extras 上;三是改完没清缓存,前端还是老结构。面包屑影响站内链接和 SEO 结构,改之前先在暂存环境确认层级对。

小结

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

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

延伸阅读

常见问题(FAQ)

bricks/breadcrumbs/items 改的是哪个面包屑? 改 Bricks 自带面包屑的条目,确认页面用的是 Bricks 面包屑元素而非主题自带的。

BricksExtras 面包屑写法一样吗? 不一样,Extras 有自己的过滤器写法,别把本文钩子直接套过去。

改完前端没变? 先清缓存(插件/CDN),再确认钩子命中的是哪个面包屑组件。

面包屑影响 SEO 吗? 影响,面包屑是站内层级信号,结构清晰对收录和用户体验都好。

Ray Chan

站长

Ray Chan

WordPress Developer & Bricks Specialist

WordPress developer with 10+ years of client builds. Switched to Bricks in 2023 — now builds fast WordPress sites and migrates legacy Elementor/Divi projects.

延伸阅读