Fanly

Fanly

一个摸爬打滚于 IT 互联网的追梦人!

WordPress自動將當前文章標籤添加為關鍵詞內鏈

在 WordPress 的文章內容中自動添加內部鏈接,比如對文章標籤的引用。這不僅可以提高網站的 SEO 效果,也可以增強用戶體驗,使得用戶更容易在你的网站上找到相關的內容。其實關於 WordPress 文章自動添加標籤內鏈的文章並不在少數,而且幾乎都是同一段代碼,並且子凡我也一直都在使用,今天剛好想要針對網站內鏈做些優化,所有乾脆連自動內鏈的功能都重寫一下。

b63ac4617b34299fd2a2ebfc4a9a417f_WordPress-Tags

其實代碼非常的簡單,但是看上去代碼可能偏多,其主要這個版本的代碼會將 img、a、code 標籤內的標籤文本替換為一個特殊標記 %&&&&&%,然後進行標籤文本的替換,最後再將特殊標記替換回原來的標籤文本。這樣可以避免在這些標籤內部替換標籤文本。廢話就不多說,直接上代碼:

//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

除非注明,否則均為淚雪博客原創文章,禁止任何形式轉載

本文鏈接:https://zhangzifan.com/wordpress-auto-tags-link.html

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。