最近在鼓捣自己博客的时候,想实现显示文章总数的功能。在wordpress doc里面翻箱倒柜半天也没有找到一个函数可以做到。好在在论坛里看到一个帖子提到了用mysql中的SELECT和WHERE子句,这样的话就可以在数据库里拿到COUNT这个值了。
要实现的功能很简单,代码也很简单,如下:
<?php
$numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'"); //在数据库中判断post_status是publish的文章,并计总数
if (0 < $numposts) $numposts = number_format($numposts); //格式化将要输出的总数
?>
<?php
echo $numposts //输出这个变量
?>
好在子句简单,性能上应该没什么问题。在这个事例上再次证明了google是最好的老师。接下来一个想法是解决现实分类总数的问题。这个倒是有wp的方法可以hack一下。
<?php
$thecats = wp_list_categories('title_li=&exclude=1&style=none&echo=0'); // 用wp_list_categories来获取所有分类,去掉所有的html(我这里用到了exclude=1只是为了排除某个分类),把字符串赋值到$thecates
$splitcats = explode('',$thecats); // 用来分割上面获取到字符串,成为数组(分类1 分类2 分类3这样)
$summ = count($splitcats)-1; // 计算数组中单元的个数,这里要减去1,因为比我们想要得到的值多1,并赋值给$summ
?>
<?php
print $summ;
?>
只能说,程序员们太聪明啦!本文中提到的三个php方法可以参考w3school的文档(它一直是很不错的网站):number_format()explode()count()

