可以自动将 WordPress 站点的文章按分类显示在一个页面中,用作 CMS 主题布局很实用。
用下代码替换首页模板主循环,则按分类显示各分类最新的 5 篇文章。
<?php
    global $cat;
    $cats = get_categories(array(
        'child_of' => $cat,
        'parent' => $cat,
        'hide_empty' => 0
    ));
    $c = get_category($cat);
    foreach($cats as $the_cat){
        $posts = get_posts(array(
            'category' => $the_cat->cat_ID,
            'numberposts' => 5,
        ));
        if(!empty($posts)){
            echo '
            <div >
                <div ><h2><a
title="'.$the_cat->name.'"
href="'.get_category_link($the_cat).'">'.$the_cat->name.'</a></h2></div>
                <ul >';
                    foreach($posts as $post){
                        echo '<li><span >'.mysql2date('Y-m-d', $post->post_date).'</span>
                        <a title="'.$post->post_title.'"
href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
                    }
                echo '</ul>
            </div>';
        }
    }
?>

用下代码替换分类归档模板主循环,则显示该分类下所有子分类的最新 5 篇文章,并按分类显示。如果当前分类下不存在子分类,则显示该分类的文章列表!
<?php
    global $cat;
    $cats = get_categories(array(
        'child_of' => $cat,
        'parent' => $cat,
        'hide_empty' => 0
    ));
    $c = get_category($cat);
    if(empty($cats)){
?>
<div >
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div >
        <h2><a title="<?php the_title(); ?>"
href="<?php%20the_permalink();%20?>"><?php the_title();
?></a></h2>
        <p><?php the_excerpt(); ?></p>
        <p><a href="<?php%20the_permalink();%20?>"> 全文阅读>></a></p>
        <div ><?php the_time('Y-m-d'); ?> | 标签: <?php the_tags('', ' , ', ''); ?></div>
    </div>
    <?php endwhile; ?>
    <?php else: ?>
        <div ><p> 文章稍后更新</p></div>
    <?php endif; ?>
</div>
<div >
    <span ><?php next_posts_link('&laquo; Older posts') ?></span>
    <span ><?php previous_posts_link('Newer posts &raquo;') ?></span>
</div>
<?php
}else{
    foreach($cats as $the_cat){
        $posts = get_posts(array(
            'category' => $the_cat->cat_ID,
            'numberposts' => 10,
        ));
        if(!empty($posts)){
            echo '
            <div >
                <div ><h2><a
title="'.$the_cat->name.'"
href="'.get_category_link($the_cat).'">'.$the_cat->name.'</a></h2></div>
                <ul >';
                    foreach($posts as $post){
                        echo '<li><span >'.mysql2date('Y-m-d', $post->post_date).'</span>
                        <a title="'.$post->post_title.'"
href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
                    }
                echo '</ul>
            </div>';
        }
    }
}
?>