不会健身的程序员
不是好作家

WordPress不用插件实现关键词自动添加链接

// 连接数量
$match_num_from = 1; // 一个关键字少于多少不替换
$match_num_to = 10; // 一个关键字最多替换
                    
// 连接到WordPress的模块
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;
}
赞(0)
转载请注明出处:小林博客 » WordPress不用插件实现关键词自动添加链接
分享到: 更多 (0)

评论 6

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    老板教育我:“在这个残酷的世界上,机会变得很重要。抓住机会活,抓不住机会死。”我点点头,赶紧去菜市场抓了一只鸡…… 一个程序员社区 http://www.1024xyz.com

    可儿3年前 (2016-01-13)回复
  2. #2

    总感觉自动链接 不放心。。

    白松露3年前 (2016-02-04)回复
  3. #3

    这个更刺j激,准备好手纸哦 A 片。。 http://uVU.cc/ih8a

    NRMHG2年前 (2016-09-05)回复
  4. 额,没出bug,这段代码不会对Crayon Syntax Highlighter代码高亮插件进行链接处理

    小林3年前 (2015-10-12)回复

谢主隆恩

支付宝扫一扫打赏

微信扫一扫打赏