想实现这个功能,但插件都不太给力,其实也不想用插件,最后找了半天才在网上找到一段代码能够实现这种效果。虽然离理想还是有点差距,比如没有实现把父分类和子分类一起列出的功能,但是还是挺满意了。

网上的代码有些不太适合博客的地方已经做了更改。代码如下。

<?php  
global $wpdb;  
$sql = "SELECT w.term_id,w.name,wt.description,wt.count FROM $wpdb->terms AS w, $wpdb->term_taxonomy AS wt WHERE wt.taxonomy='category' AND wt.term_id=w.term_id AND w.term_id>1 AND wt.parent<>0";  
$cat=$wpdb->get_results($sql);  
foreach ($cat as $term) :?>  
<?php  
    $id=$term->term_id;  
    $name=$term->name;  
    $box='box'.$id;  
//    $dec=$term->description;  
    $count=$term->count;  
    ?>  
      <div><h4><a href="<?php echo get_category_link($id);?>" title="<?php echo $name; ?>"><?php echo $name."(".$count." Posts)"; ?></a></h4>  
      <p>  
        <ul id="<?php echo $box;?>" style="display:none"> <!--以列表方式输出文章-->  
        <?php  
           global $post;  
           $myposts = get_posts('numberposts=-1&category='.$id);  
                foreach($myposts as $post) : ?>  
        <?php $comm_count=$post->comment_count;?>  
                <li><a href="<?php the_permalink(); ?>" title="<?php the_title();?>"><?php the_title(); echo " (".$comm_count.")"; ?></a>  
                      <?php the_time('Y-m-d'); ?>  
</li>  
        <?php endforeach; ?>  
        </ul></p></div>  
<?php endforeach; ?>

效果如下。

列出所有文章

列出所有文章