在 WordPress 的文章内容中自动添加内部链接,比如对文章标签的引用。这不仅可以提高网站的 SEO 效果,也可以增强用户体验,使得用户更容易在你的网站上找到相关的内容。其实关于 WordPress 文章自动添加标签内链的文章并不在少数,而且几乎都是同一段代码,并且子凡我也一直都在使用,今天刚好想要针对网站内链做些优化,所有干脆连自动内链的功能都重写一下。
其实代码非常的简单,但是看上去代码可能偏多,其主要这个版本的代码会将 img、a、code 标签内的标签文本替换为一个特殊标记%&&&&&%,然后进行标签文本的替换,最后再将特殊标记替换回原来的标签文本。这样可以避免在这些标签内部替换标签文本。废话就不多说,直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | //WordPress 文章标签自动内链 add_filter('the_content', 'fanly_auto_tags_link'); function fanly_auto_tags_link($content) { $tags = get_the_tags(); //获取当前文章的标签 if($tags){ foreach ($tags as $tag) { $link = get_tag_link($tag->term_id); //生成标签链接 $tag_name = preg_quote($tag->name, '/'); //转义标签名 //提前保护<a>、<img>、<code>标签内的内容 $content = preg_replace_callback('/(<a[^>]*>)(.*?)(</a>)/si', function($matches) use ($tag_name) { return str_replace($tag_name, '%&&&&&%', $matches[0]); }, $content); $content = preg_replace_callback('/(<img[^>]*)(.*?)(' . $tag_name . ')(.*?)(>)/si', function($matches) use ($tag_name) { return str_replace($tag_name, '%&&&&&%', $matches[0]); }, $content); $content = preg_replace_callback('/(<code[^>]*>)(.*?)(</code>)/si', function($matches) use ($tag_name) { return str_replace($tag_name, '%&&&&&%', $matches[0]); }, $content); //替换内容中的标签文本为链接,限制替换次数为 1 $content = preg_replace('/' . $tag_name . '/iu', '<a href="' . $link . '">' . $tag->name . '</a>', $content, 1); //恢复被保护的标签内的内容 $content = str_replace('%&&&&&%', $tag_name, $content); } } return $content; } |
这段代码将会自动在文章内容中为每个标签创建一个链接。首先,它获取当前文章的所有标签,然后对于每个标签,生成一个到标签归档页面的链接。然后,它使用正则表达式查找内容中的标签文本,并将其替换为链接。这里,我们使用了 preg_replace_callback 函数来避免替换 HTML 标签内的内容。
看上去规范很多了,其实这只是一个简单的用法也是最偷懒的网站内链优化方式,但是由于每个人的使用场景不一样,所以提供一个基础的解决方案给大家参考吧,其实还可以进行一些增强甚至添加自定义链接。
更多关于WordPress优化及疑问可以添加QQ群:255308000
除非注明,否则均为泪雪博客原创文章,禁止任何形式转载
留言评论