WordPress无插件完美实现文章内外链改写跳转

为了避免我们网站中的外链导出也好,保护域名的权重也罢,单纯的喜欢外链好看也行,文章内需要弄一个外链跳转。

改写后的WordPress文章外链是:https://WordPress链接/go?e=10_2_1656126428

参数说明:

10_2_1656126428,第一段是文章ID,第二段是文章内外链ID,第三段是时间戳

为什么要加入一个时间戳?在测试中,修改文章内链接时,跳转页面有一段时间缓存,时间戳是实时的,防止因为缓存而未能及时修改文章内链接!(其实,可能也不需要)

首先在模板文件夹内新建一个页面模板page-go.php,代码如下

post_content);//get_post($postid)->post_content通过ID获取文章内容,alllink()//提取文章内所有链接
$url=$links[$jumpid];
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: ".$url );
?>

其次,在functions.php中修改改写链接,代码:

function alllink($content){
	global $post;
	$pattern="//";
	preg_match_all($pattern, $content, $matches);
	if(!empty($matches[1])){
		$link=$matches[1];
		$i=0;
		if(isset($_GET["e"])){  
			return $link;
		}else{
			foreach($link as $url){
			$content=str_ireplace($url,get_bloginfo("url").'/go?e='.$post->ID.'_'.$i.'_'.time(),$content);
			$i++;
			}
			return $content;
		}
	
	}
	return false;
}
add_filter( 'the_content', 'alllink' );

链接改写成功,不用插件,不操作数据库改写外链格式

你可能感兴趣的:(网站优化,PHP学习笔记,WordPress)