如何为WooCommerce产品筛选器添加rel='nofollow'属性?
为WooCommerce产品筛选器添加
rel="nofollow"的实现方案 WooCommerce产品筛选生成的链接大多指向带过滤参数的动态重复页面,不需要修改WooCommerce核心文件,通过WordPress原生钩子拦截前端链接输出,即可给对应<a>标签注入rel="nofollow"属性,避免搜索引擎抓取重复低价值页面浪费抓取配额。
具体操作步骤
1. 代码实现原生筛选功能的属性注入
将以下代码添加到子主题的functions.php文件,或通过代码片段插件启用,不会因主题、插件更新丢失:
// 给分层导航(产品属性)筛选链接添加nofollow add_filter( 'woocommerce_layered_nav_link', 'inject_nofollow_for_filter_link', 10, 3 ); // 兼容价格筛选、筛选重置链接的属性注入 add_filter( 'woocommerce_price_filter_widget_reset_link_html', 'inject_nofollow_for_filter_link' ); function inject_nofollow_for_filter_link( $link_html ) { // 兼容已有rel属性的场景,避免标签重复 if ( strpos( $link_html, 'rel="' ) !== false ) { // 已有rel标签时,把nofollow追加到原有属性中 return str_replace( 'rel="', 'rel="nofollow ', $link_html ); } // 无rel标签时,直接给a标签插入对应属性 return str_replace( '<a ', '<a rel="nofollow" ', $link_html ); }
2. 第三方筛选插件的适配
如果站点使用YITH、WooCommerce Product Filters这类第三方筛选插件:
- 优先查看插件的SEO设置区,部分插件自带「为筛选链接添加nofollow」的开关,直接勾选即可生效,无需额外写代码
- 如果没有内置开关,找到插件前端链接输出对应的过滤器钩子,复用上面的字符串替换逻辑,给输出的a标签注入对应属性即可
注意事项
- 不要给全站链接盲目添加
nofollow,仅针对筛选生成的带参数动态链接添加,避免影响正常产品、分类页面的权重传递 - 代码生效后需要清理网站缓存、CDN缓存、浏览器缓存,才能在前端看到实际效果
验证方式:打开前端产品分类页,右键点击筛选选项检查元素,确认a标签上已经正确输出
rel="nofollow"属性即可。

内容的提问来源于stack exchange,提问作者Mateusz W.
相关产品推荐
相关产品推荐

