如何修改WordPress代码为不同/go路径链接添加对应自定义属性
WordPress 多/go/路径链接专属属性批量添加方案
原代码仅硬编码支持/go/link-1单一路径的属性添加,要扩展支持多路径分别匹配对应属性,最易维护的方式是用规则映射表改造,后续新增规则不需要改核心判断逻辑,适合新手操作。
核心修改逻辑
- 新增规则配置数组,把需要特殊处理的/go路径和对应的
data-analytics值做一一映射 - 替换原代码里单一路径的循环判断,改为遍历配置数组匹配链接href
- 完全保留原代码对站内链接、页内锚点、普通外链的原有处理逻辑,不破坏已有功能
修改后可直接使用的完整代码
function rewrite_links($content) { $content = preg_replace_callback( '/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i', function($m) { // 在这里新增/修改链接规则,格式:'/go/路径' => '对应data-analytics值' $link_rules = [ '/go/link-1' => 'Link-1', '/go/link-2' => 'Link-2', '/go/link-3' => 'Link-3', // 需要加新链接规则直接在上面按格式新增行即可 ]; $matched_analytics = ''; // 遍历规则匹配当前链接 foreach ($link_rules as $path => $analytics_val) { if (strpos(strtolower($m[1]), strtolower($path)) !== false) { $matched_analytics = $analytics_val; break; // 匹配到就停止遍历,节省性能 } } // 匹配到专属规则的/go链接 if (!empty($matched_analytics)) { return '<a href="'.$m[1].'" rel="nofollow noopener" target="_blank" data-analytics="'.$matched_analytics.'">'.$m[2].'</a>'; } // 原有逻辑:站内链接、页内锚点直接返回原代码 elseif ((strpos(strtolower($m[1]), $_SERVER['HTTP_HOST']) !== false) || (substr($m[1],0,1) == "#")) { return $m[0]; } // 普通外链原有处理逻辑 else { return '<a href="'.$m[1].'" rel="follow noopener" target="_blank">'.$m[2].'</a>'; } }, $content); return $content; } add_filter('the_content', 'rewrite_links', 100);
后续新增规则方法
如果需要添加新的/go路径(比如/go/link-10对应data-analytics="Link-10"),只需要在$link_rules数组里新增一行配置即可:
'/go/link-10' => 'Link-10',
不需要修改其他任何代码,保存后就会自动生效。
内容的提问来源于stack exchange,提问作者ChadF
相关产品推荐
相关产品推荐

