看到这个标题,是不是觉得很神奇?
没有了,其实道理很简单:
通过检测wordperss的标签库当中的标签与文章当中的内容进行对比,如果有相同的,则将这些词添加进当前文章的Tag标签与文章页的关键词当中,还有,还有,文章当中的这些词会自动添加内链一次(每个次只执行一次,关键词进行内链,链接出来的就是网站的内容聚合式的查询,出来的就会是与这个词相关的文章列表。)。
代码如下:
/** WordPress 自动为文章添加已使用过的标签 */
add_filter('the_content', 'auto_add_tags', 1 );
function auto_add_tags($content){
$tags = get_tags( array('hide_empty' => false) );
$limit = 1; // 设置同一个标签添加几次链接
$post_id = get_the_ID();
if ($tags) {
foreach ( $tags as $tag ) {
// 如果文章内容出现了已使用过的标签,自动添加这些标签
if ( strpos($content, $tag->name) !== false)
wp_set_post_tags( $post_id, $tag->name, true );
//替换文中出现的tag,替换次数需要设置limit
$link = get_tag_link($tag->term_id);
$keyword = $tag->name;
if (preg_match_all('|(<h[^>]+>)(.*?)'.$keyword.'(.*?)(</h[^>]*>)|U', $content, $matchs)) {continue;}
if (preg_match_all('|(<a[^>]+>)(.*?)'.$keyword.'(.*?)(</a[^>]*>)|U', $content, $matchs)) {continue;}
$cleankeyword = stripslashes($keyword);
$url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),__('查看与 %s 相关的文章', 'begin' ))."\"";
$url .= ' target="_blank"';
$url .= ">".addcslashes($cleankeyword, '$')."</a>";
$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;
}
评论