WordPress文章中指定关键词添加内链完美方案

原创 2020-09-22 本文共1830个字,预计耗時5分钟 776次阅读
文章摘要:文章内链无疑是网站优化的重要的一环,所谓的网站内链就是在编辑发布文章中的关键词链接一个URL到指定页面、栏目、首页,增加这类页面的投票,比如想要优化“织梦模板”这个词,那么我们就应该写相关文章的时候出现这个词的时候链接到指定页面上: <...

WordPress文章中指定关键词添加内链完美方案

wordpress指定关键词内链

文章内链无疑是网站优化的重要的一环,所谓的网站内链就是在编辑发布文章中的关键词链接一个URL到指定页面、栏目、首页,增加这类页面的投票,比如想要优化“织梦模板”这个词,那么我们就应该写相关文章的时候出现这个词的时候链接到指定页面上:

<a  href="http://doc.ydqic.com/" title="一朵七彩">一朵七彩</a>

当大量编写文章发布内容时,手动一个个设置时尤其是优化多个关键词,各个指向的URL地址也不一样,那么手动添加就变成了一项繁锁的工作。那么怎么实现自动添加,我们无需一个手动添加只要做好纯文字内容,系统自动监测文字出现目标关键词就添加链接,对于wordpress当然可以用插件实现,类似的插件也有很多,可以自行百度,但是秉承不用插件就尽量不用,毕竟这也只是小功能,通过搜索是有相关教程的,只需要在相关模板主函数functions.php中追加一个函数:

function replace_text_wps($text){
	$replace = array(
		'一朵七彩' => '<a href="http://doc.ydqic.com/ target="_blank" title="一朵七彩">一朵七彩</a>', //添加修改自己的关键词和地址 
        );
	$text = str_replace(array_keys($replace), $replace,$text);
	return $text;
}
add_filter( 'the_content', 'replace_text_wps');

其中的数组部分替换自己的想要的关键词和链接即可,函数也很简单,就是将the_content的内容监测有目标关键词替换为带链接的目标关键词。

问题改进

 这样的函数会在使用发现一个问题就是,如果标签内部出现目标关键词也会被替换掉,造成了在标签内插了一个标签,使得最后HTML页面乱掉,如图片的alt和title中就很容易出现目标关键词,就可能会下面情况:

<img src="###" atl="一朵七彩" />
被替换为
<img src="###" atl="<a href="###">一朵七彩</a>" />

这种情况肯定会显示出问题的,那么就要向插件低头,为了一个小功能去安装wordpress插件吗,上面的小函数还是很好的只是没有考虑内容里标签内部情况,如果文章里图片没打算写alt、title属性那么也是能用的。那么只需要过滤掉标签内部替换情况即可不是;改进思路也是如此,使用正则匹配规则将标签和文字分开,只处理文字部分,最后拼接处理后的文字和标签返回。

function replace_text_wps($text){
	$replace = array(
		'一朵七彩' => '<a href="http://doc.ydqic.com/" target="_blank" title="一朵七彩">一朵七彩</a>'
	);
	//防止替换 标签内部 文字 
	$pattern = "/<(\/)?([a-z]+)[^>]*>/i";  //匹配 标签符号
	preg_match_all($pattern, $text, $pat_array);
	$tagArray = $pat_array[0]; //标签<xx> </xx>
	$strArray = preg_split($pattern, $text , NULL);  // 标签内文字部分,前后各有一个空的字符串
	$len = count($strArray);
	if($len>1){
		for($i=1;$i<$len;$i++){ // 含有标签内容  只处理 文字部分
			if(strlen($strArray[$i])>0){ //非空文字
				$strArray[$i] = str_replace(array_keys($replace), $replace, $strArray[$i]);
			}
			$textrep .= $tagArray[$i-1].$strArray[$i];  //字符串从1 开始 第一个是空的,标签从0开始  拼接
		}
	}else{  //纯文字情况
		$textrep = str_replace(array_keys($replace), $replace, $strArray[0]);
	}
	//防止替换 标签内部 文字  结束
	return $textrep;
}
add_filter( 'the_content', 'replace_text_wps');

最后去刷新看看,可以实现光文字部分被替换,而图片alt/title内的文字不变,页面排版也不乱了。

版权免责申明
① 本站源码模板等资源SVIP用户永久不限量免费下载
② 所有资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你有源码需要出售,可以联系管理详谈。
⑤ 本站提供的源码、模板、插件等等资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。
⑧ 网站资源绝不做任何二次加密或添加后门(原版加密除外)
常见问题F&Q
需要积分的资源怎么下载?
您可以注册后签到等活跃动作获得积分,积分可下载,也可充值升级等级免费下载。
源码模板等文件安全吗?有没有后门病毒吗?
站内资源标有“已测试”标签的资源源码,表示已经在本地安装测试调试过才分享出来的,可以保证一定的安全;若不放心可以自行下载模板资源后使用D盾等查杀工具扫一遍确认安全。
本站网站模板等源码提供安装服务吗?
本站资源收集于网络并分享出来共同学习,不提供免费安装服务,模板源码安装等需要有一定熟悉度,小白用户可以下载资源后雇人安装调试。