WordPress通過純代碼實(shí)現(xiàn)自動(dòng)為文章添加標(biāo)簽和標(biāo)簽內(nèi)鏈接
wordpress 2023-12-05編輯:深圳網(wǎng)站建設(shè)閱讀()
WordPress
標(biāo)簽
添加
最近,小編為了提升網(wǎng)站的用戶體驗(yàn)和頁面的收錄量,添加了標(biāo)簽云功能。由于小編的技術(shù)水平有限,每次寫文章時(shí)都是自己整理的標(biāo)簽并手動(dòng)添加,哪怕是已經(jīng)存在的標(biāo)簽。對(duì)于已存在的標(biāo)簽最好是能夠自動(dòng)添加標(biāo)簽了,不然全手動(dòng)的話小編肯定會(huì)崩潰的,除此之外在網(wǎng)上發(fā)現(xiàn)許多的WordPress網(wǎng)站添加了標(biāo)簽云功能后,在文章中對(duì)于Tag標(biāo)簽的文字還增加了超鏈接,相當(dāng)于給網(wǎng)站頁面增加了內(nèi)鏈功能,這對(duì)于網(wǎng)站優(yōu)化,用戶體驗(yàn)是很友好的,而小編的站在剛開始添加標(biāo)簽云的時(shí)候并沒有對(duì)tag標(biāo)簽增加超鏈接,因此也非常希望能夠?qū)崿F(xiàn)這個(gè)功能。
那么,這兩個(gè)功能該怎么才能實(shí)現(xiàn)呢?
WordPress站點(diǎn)實(shí)現(xiàn)自動(dòng)為文章添加Tag標(biāo)簽,并自動(dòng)為這些標(biāo)簽添加鏈接變成內(nèi)連接的方法。
1.文章自動(dòng)添加標(biāo)簽功能的實(shí)現(xiàn)
只需將下面的代碼添加進(jìn)WordPress主題的functions.php中就能夠?qū)崿F(xiàn)了。
/* 自動(dòng)為文章添加標(biāo)簽 */
add_action('save_post', 'auto_add_tags');
function auto_add_tags(){
$tags = get_tags( array('hide_empty' => false) );
$post_id = get_the_ID();
$post_content = get_post($post_id)->post_content;
if ($tags) {
foreach ( $tags as $tag ) {
// 如果文章內(nèi)容出現(xiàn)了已使用過的標(biāo)簽,自動(dòng)添加這些標(biāo)簽
if ( strpos($post_content, $tag->name) !== false)
wp_set_post_tags( $post_id, $tag->name, true );
}
}
}
上面的代碼功能就是在我們發(fā)布/保存/更新文章時(shí),自動(dòng)檢測(cè)文章中的內(nèi)容,是否出現(xiàn)曾經(jīng)使用過的標(biāo)簽。如果出現(xiàn)過就會(huì)自動(dòng)為文章添加這些標(biāo)簽。
2.文章自動(dòng)給文章內(nèi)出現(xiàn)的標(biāo)簽內(nèi)容添加超鏈接,即內(nèi)鏈。
同樣只需將以下代碼添加WordPress主題的functions.php中就能夠?qū)崿F(xiàn)了。
/* 自動(dòng)為文章內(nèi)的標(biāo)簽添加內(nèi)鏈 */
$match_num_from = 1; //一篇文章中同一個(gè)標(biāo)簽少于幾次不自動(dòng)鏈接
$match_num_to = 1; //一篇文章中同一個(gè)標(biāo)簽最多自動(dòng)鏈接幾次
function tag_sort($a, $b){
if ( $a->name == $b->name ) return 0;
return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}
function tag_link($content){
global $match_num_from,$match_num_to;
$posttags = get_the_tags();
if ($posttags) {
usort($posttags, "tag_sort");
foreach($posttags as $tag) {
$link = get_tag_link($tag->term_id);
$keyword = $tag->name;
$cleankeyword = stripslashes($keyword);
$url = "<a href="$link" title="".str_replace('%s',addcslashes($cleankeyword, '$'),__('點(diǎn)擊了解更多關(guān)于[%s]的文章')).""";
$url .= ' target="_blank"';
$url .= ">".addcslashes($cleankeyword, '$')."</a>";
$limit = rand($match_num_from,$match_num_to);
$content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
$content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
$cleankeyword = preg_quote($cleankeyword,''');
$regEx = ''(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))'s' . $case;
$content = preg_replace($regEx,$url,$content,$limit);
$content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
}
}
return $content;
}
add_filter('the_content','tag_link',1);
以上代碼的功能就是在我們發(fā)布/保存/更新文章時(shí),自動(dòng)檢測(cè)文章中的內(nèi)容,是否出現(xiàn)標(biāo)簽內(nèi)容。如果出現(xiàn)過就會(huì)自動(dòng)為文章內(nèi)的標(biāo)簽添加內(nèi)鏈。
最終效果:

當(dāng)我們站點(diǎn)的Tag標(biāo)簽足夠多,使用這兩個(gè)代碼以實(shí)現(xiàn)WordPress站點(diǎn)自動(dòng)為文章添加標(biāo)簽和標(biāo)簽內(nèi)鏈,就會(huì)大大減少我們的工作量。如果大家平時(shí)不喜歡手動(dòng)添加標(biāo)簽的話,可以試試這個(gè)方法。
服務(wù)范圍:WordPress搭建、WordPress主題開發(fā)、WordPress二次開發(fā)、WordPress插件開發(fā)
其它服務(wù):網(wǎng)站建設(shè)、企業(yè)郵箱、數(shù)字證書ssl、400電話、
技術(shù)標(biāo)簽:企業(yè)網(wǎng)站、外貿(mào)網(wǎng)站、外貿(mào)商城、其它問題
聯(lián)系方式:電話:13714666846 微信同號(hào)