让wordpress标签云显示文章数的正确方法
阅读原文时间:2024年07月01日阅读:1

先看一下效果

在百度经验找到一个教程,可惜,根据实践发现方法是错误的,
百度经验上的代码:

1

2

3

4

5

6

7

8

9

10

11

12

//标签tag所包含的文章数量

function Tagno(``$text``) {

$text = preg_replace_callback(``'|<a>|i'``, 'tagnoCallback'``, $text``);

return $text``;

}

function tagnoCallback(``$matches``) {

$text``=``$matches``[1];

preg_match(``'|title=(.+?)style|i'``,``$text ,``$a``);

preg_match(``"/[0-9]/"``,``$a``[1],``$a``);

return "<a "``.``$text .``"["``.``$a``[0].``"]"``;

}

add_filter(``'wp_tag_cloud'``, 'Tagno'``, 1);

加到function.php后,文章数输出倒是能够输出,但页面会发生错误,通过查看源代码可以发现,它的标签都没有封闭,也就是缺少,所以标签云以下的某些部分会出错。
另外,它这个只能正常输出含个位数文章的数量,如果是十位以上,它只会输出文章数的第一位,比如“10篇文章”,它只会输出“[1]”。原因是正则表达式错误,/[0-9]/只会匹配数字一次,应使用/[0-9]+/来匹配所有的数字。
修改后的代码:

1

2

3

4

5

6

7

8

9

10

11

12

//标签tag所包含的文章数量

function Tagno(``$text``) {

$text = preg_replace_callback(``'|<a (.+?)</a>|i'``, 'tagnoCallback'``, $text``);

return $text``;

}

function tagnoCallback(``$matches``) {

$text``=``$matches``[1];

preg_match(``'|title=(.+?)style|i'``,``$text ,``$a``);

preg_match(``"/[0-9]+/"``,``$a``[0],``$b``);

return "<a "``.``$text .``"<span>["``.``$b``[0].``"]</span></a>"``;

}

add_filter(``'wp_tag_cloud'``, 'Tagno'``, 1);

代码里将输出的数字加入到标签里,可以细调数字的格式。
本文转载自:http://idlelife.org/archives/404

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章