WooCommerce分类页搭配Rank Math实现带筛选属性的动态标题
可直接复用的实现方案
以下代码自动适配所有产品分类页的品牌筛选场景,不会全局篡改其他页面标题,无需针对单个分类/品牌手动配置。
代码片段
将以下代码添加到当前子主题的functions.php文件,或通过Code Snippets插件以代码片段形式插入并启用即可:
// 调整品牌筛选场景下的Rank Math meta标题 add_filter( 'rank_math/frontend/title', function( $title ) { // 限定仅WooCommerce产品分类归档页生效 if ( ! is_product_category() ) { return $title; } // 安全获取URL中的品牌筛选参数 $brand = isset( $_GET['filter_brand'] ) ? sanitize_text_field( wp_unslash( $_GET['filter_brand'] ) ) : ''; // 无有效品牌参数时返回原生标题 if ( empty( $brand ) ) { return $title; } // 自定义标题拼接规则,可按需调整顺序与文案 return sprintf( '%s | %s', esc_html( $brand ), $title ); }); // 同步修改分类页h1标签,与meta标题逻辑保持一致 add_filter( 'the_title', function( $title, $post_id ) { // 排除非主循环、非产品分类页的场景,避免误改其他位置的标题 if ( ! is_product_category() || ! in_the_loop() || ! is_main_query() ) { return $title; } $brand = isset( $_GET['filter_brand'] ) ? sanitize_text_field( wp_unslash( $_GET['filter_brand'] ) ) : ''; if ( empty( $brand ) ) { return $title; } return sprintf( '%s %s', esc_html( $brand ), $title ); }, 10, 2 );
逻辑说明
- 页面判断规则:仅当访问页面为WooCommerce原生产品分类归档页时才执行修改逻辑,首页、商品详情页、文章页、普通页面均不受影响,不会出现全站点标题被统一替换的问题
- 参数读取逻辑:自动提取URL中
filter_brand的参数值,新增分类、新增品牌无需额外修改代码,自动适配 - 安全处理:所有URL传入的参数都经过WordPress原生安全函数转义,避免恶意参数注入风险
- 自定义调整:如果需要修改标题格式,直接修改
sprintf函数内的模板即可,例如要实现「分类名 - XX品牌专区」的效果,可将meta标题的返回值改为sprintf( '%s - %s专区', $title, esc_html( $brand ) )
校验注意事项
- 添加代码前请备份站点文件,避免语法错误导致站点异常
- 代码生效后请清空站点缓存、CDN缓存,分别测试普通分类页、带品牌参数的分类页、非分类页的标题展示,确认仅目标场景触发修改
- 如果后续需要新增其他筛选项(如颜色、材质)的动态标题,参照品牌参数的判断逻辑新增对应
$_GET参数的读取与拼接规则即可
内容的提问来源于stack exchange,提问作者Youss
相关产品推荐
相关产品推荐

