给文章标签添加内链,意思就是说,如果你文章中出现了和标签一样的文字,那么这个文字就会自动成为标签链接,你点击这个链接就会查看到所有含有该标签的文章,这个能方便用户浏览,据说还利于SEO。下面说说方法:
把下面的代码添加到function.php中就可以了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//自动为文章标签添加该标签的链接 $match_num_from = 1; // 一个标签在文章中出现少于多少次不添加链接
$match_num_to = 1; // 一篇文章中同一个标签添加几次链接
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 ;
} |
看看效果图: