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

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