1. 盒子部落首页
  2. 网络网站
  3. 网站工具

WordPress 代码实现自动为文章添加标签内链

Wordpress有一个诟病就是不能自动智能添加标签;当然作为一款国外的开源程序,支持中文智能是有点小纠结的,那我们只能把功能寄托在已经添加过的标签,在发布文章时可以自动为文章添加了。

WordPress有一个诟病就是不能自动智能添加标签;当然作为一款国外的开源程序,支持中文智能是有点小纠结的,那我们只能把功能寄托在已经添加过的标签,在发布文章时可以自动为文章添加了。当然如果可以加上一个链接就更好了,好的,那么下面给大家介绍的功能就是自动添加标签及内链的功能代码;只需要把代码复制到主题函数functions.php文件当中,功能就可以实现了

用途:

1、类似百度百科,使文章内容信息更丰富。

2、标签内链可以让蜘蛛更好的抓取和收录标签,并有可能抓取该标签下的文章页面,提升整站抓取量。

主题的functions.php文件添加如下代码:

方法一:

//WordPress 文章关键词自动内链
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){
	$match_num_from = 1;	//一个标签少于几次不链接
	$match_num_to = 1;	//一个标签最多链接几次
	$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, '$'),__('更多关于 %s 的文章'))."\"";
			$url .= ' target="_blank"';
			$url .= ">".addcslashes($cleankeyword, '$')."</a>";
			$limit = rand($match_num_from,$match_num_to);
			//不链接代码
			$content = preg_replace( '|(<a[^>]+>)(.*)<pre.*?>('.$ex_word.')(.*)<\/pre>(</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);

方法二:

//自动TAG转内链
$match_num_from = 1; // 一个TAG标签出现几次才加链接
$match_num_to = 1; // 同一个标签加几次链接
add_filter('the_content','tag_link',1);
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, '$'),__('View all posts in %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;
}

注意事项:

把上面代码添加到functions.php文件后,当我们发布、更新、保存文章时,会自动检测文章中是否有标签关键词,如果有就会自动添加这些标签的链接。虽然是自动的,但我们还需注意以下两点:

1、上面代码中$match_num_to = 1;    //一篇文章中同一个标签最多自动链接几次,这个建议最多只设置3次。

2、代码中的$posttags = get_tags();   表示自动为文章添加全站所有标签链接,我们还可以改成只为此文章设置的标签添加链接,只需将 “$posttags = get_tags();” 改成 “$posttags = get_the_tags();” 即可。

一般建议使用盒子部落推荐代码,无需做任何修改。

原创文章,作者: QSQ,本站资源均来源于网络,仅供学习交流使用,若想体验更多,请支持正版。
转载或复制文章时,请注明本文出处及文章链接: https://www.hezibuluo.com/5565.html

发表评论

电子邮件地址不会被公开。

联系我们

在线咨询:点击这里给我发消息

邮件咨询:mail@hezibuluo.com

QR code