Wordpress - 如何显示按类别分组的帖子?

时间:2010-11-29 21:08:42

标签: wordpress categories

我希望在WordPress中显示按类别分组的帖子标题:

类别:苹果   - 帖子标题一   - 帖子标题二   - 帖子标题....

类别:橘子   - 帖子标题一   - 帖子标题二   - 帖子标题....

我需要代码来完成此操作,而不是插件或类别小部件。

1 个答案:

答案 0 :(得分:1)

这类似于创建“按类别归档页面”,可以使用以下代码完成:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post" id="post-<?php the_ID(); ?>">
    <h2><?php the_title(); ?></h2>
        <div class="entry">
            <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>

            <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

        </div>
    </div>
    <?php endwhile; endif; ?>

    <!-- Category Archive Start -->
    <ul class="catArchive">
    <?php
    $catQuery = $wpdb->get_results("SELECT * FROM $wpdb->terms AS wterms INNER JOIN $wpdb->term_taxonomy AS wtaxonomy ON ( wterms.term_id = wtaxonomy.term_id ) WHERE wtaxonomy.taxonomy = 'category' AND wtaxonomy.parent = 0 AND wtaxonomy.count > 0");

    $catCounter = 0;

    foreach ($catQuery as $category) {

        $catCounter++;

        $catStyle = '';
        if (is_int($catCounter / 2)) $catStyle = ' class="catAlt"';

        $catLink = get_category_link($category->term_id);

        echo '<li'.$catStyle.'><h3><a href="'.$catLink.'" title="'.$category->name.'">'.$category->name.'</a></h3>';
            echo '<ul>';

            query_posts('cat='.$category->term_id.'&showposts=5');?>

            <?php while (have_posts()) : the_post(); ?>
                <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
            <?php endwhile; ?>

                <li><a href="<?php echo $catLink; ?>" title="<?php echo $category->name; ?>">More <strong><?php echo $category->name; ?></strong></a></li>
            </ul>
        </li>
        <?php } ?>
    </ul>
    <!-- Category Archive End -->

请注意,上面的代码只会显示与其关联的帖子的类别,否则会跳过它们。

此外,它只会显示每个类别下的最后5个帖子。您可以通过更改showposts变量后的数字来更改它。例如,您可以更改:

query_posts('cat='.$category->term_id.'&showposts=5'); 

显示10个帖子:

query_posts('cat='.$category->term_id.'&showposts=10');

在开头将上面的行替换为循环,你应该有一个功能“按类别存档”页面。