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

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

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

参数说明:

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

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

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

<?php
/**
 * Template Name: 外链跳转
 */
$e=isset($_GET["e"])?$_GET["e"]:false;//获取url参数e
$ids=explode("_",$e);//分割URL参数e
$postid=$ids[0];//获得文章ID
$jumpid=$ids[1];//获得链接ID
$links=alllink(get_post($postid)->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="/<a.*?href=[\'|\"](.*?)[\'|\"].*?[\/]?>/";
	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' );

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值