首页 / 中文教程 / 教程

Bricks 在 My Account 页面标题后追加 WooCommerce 端点名称

WooCommerce 的 My account 各端点页(订单/下载/地址/账户详情)标题都一样。用自定义函数识别当前端点并拼接后缀,让页面标题变成『订单 - Orders』这种可区分的文案。

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

问题背景

WooCommerce 的“我的账户(My account)“页面下有多个子页面,官方术语叫端点(Endpoint):订单、下载、地址、账户详情等。它们共用 My account 这一个页面,URL 不同(/my-account/orders//my-account/downloads/……),但页面标题都显示为”My account“。

结果就是:浏览器标签页上全是同一个标题,用户开多个标签分不清谁是谁;如果你用 Bricks 给 My account 做了自定义模板并在标题区输出 {post_title},同样无法区分当前在哪个端点。

解决办法:注册一个函数识别当前端点,返回对应的后缀文案,拼到标题后面。

Step 1:注册端点识别函数

在子主题的 functions.php(不需要开头 <?php 标签)或代码片段插件中添加:

function bl_get_endpoint_name(): string {
    if ( is_wc_endpoint_url( 'orders' ) ) {
        return ' - Orders';
    } elseif ( is_wc_endpoint_url( 'downloads' ) ) {
        return ' - Downloads';
    } elseif ( is_wc_endpoint_url( 'edit-address' ) ) {
        return ' - Addresses';
    } elseif ( is_wc_endpoint_url( 'edit-account' ) ) {
        return ' - Account details';
    } else {
        return '';
    }
}

核心是 WooCommerce 自带的 is_wc_endpoint_url( '端点名' ) 判断函数:传入端点 slug,返回当前页面是否处于该端点。按顺序判断后返回对应后缀,都不是就返回空字符串(比如 My account 首页本身)。

Step 2:拼进页面标题

在 Bricks 模板中,把标题元素的动态数据设为:

{post_title}{echo:bl_get_endpoint_name}

这样在订单端点页,标题就会渲染成“My account - Orders”;在下载页变成“My account - Downloads”,以此类推。

Step 3:白名单化

Bricks 只允许执行白名单内的函数,把 bl_get_endpoint_name 加进去:

add_filter( 'bricks/code/echo_function_names', function() {
  return [
    'bl_get_endpoint_name'
  ];
} );

同样建议把站点其他自定义函数一并收集进来(Bricks → 设置 → 自定义代码 → Code review 可核对)。

小结

这套“is_wc_endpoint_url() 识别端点 + {echo:...} 动态输出“的方案,不止能改标题:任何需要按端点区分的输出——比如给不同端点页显示不同的提示横幅——都可以照这个模式做。WooCommerce 端点的完整清单可以查官方文档(woocommerce.com 开发者文档 Endpoints 一节),按需扩展 elseif 分支即可。

顺带一提,前端体验层面浏览器标题一变,用户多开标签页的辨识度立刻提升;对 SEO 来说每个端点页的 title 也各不相同,算是白捡的优化。

需要帮忙?

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

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

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