如何显示单个类别的帖子?

时间:2011-11-27 作者:Eric

是否可以显示单个类别的帖子?我尝试浏览到URLhttp://mysite.com/category/foo 它确实显示了所有类别为foo的帖子,但这些帖子在列表中丢失了格式。

我想要一个完整的分页的帖子列表,可以保持格式。我需要为此编写插件吗?有人能给我一些如何做的建议吗?

3 个回复
最合适的回答,由SO网友:tollmanz 整理而成

听起来你实际上可能只需要做很少的事情就可以让它正常工作。似乎存在模板层次结构问题。在WordPress中,在决定使用哪个模板来显示特定URL生成的内容时,需要考虑许多变量。如果你看看WordPress\' Template Hierarchy, 你可以看到这些决策是如何做出的。

对于分类法,更具体地说,WordPress的内置类别分类法,WordPress按以下顺序查找这些模板:

类别{slug}。php-如果类别的slug是新闻,WordPress将查找类别新闻。php类别{id}。php——如果类别的ID为6,WordPress将查找类别6。php类别。php存档。php索引。这些文件位于活动主题的文件夹中。如果找到第一个文件,它将用于显示您的内容。如果没有,WordPress将查找第二个文件,以此类推。如果没有找到任何内容,它将默认为您的索引。php文件。

现在,在你的情况下,听起来你真的有一个索引。php文件,它以您真正喜欢的方式显示帖子;但是,当您尝试访问类别页面时,显示会有所不同。这对我来说意味着WordPress正在显示1-4中列出的一个文件,而没有显示与您的常规博客帖子相同的模板,这可能是索引。php。因此,您可以通过执行以下两种操作之一来解决此问题(注意,请在执行这些选项之前备份您的文件)。

1) 找出显示类别页面的模板。复制索引的内容。php到该文件

2) 删除显示类别页面的文件,并建立索引。php显示页面。

通过做这两种选择中的任何一种,你将避免任何打破WordPress做事方式的黑客解决方案,这将为你节省大量的麻烦。此外,分页将在没有任何自定义解决方案的情况下工作。

我知道这可能不太简单,但请随时询问更多有关这方面的信息,希望我们能帮您解决问题。

SO网友:Andres Yanez

如果要显示类别帖子列表,可以使用自定义循环,如下所示:

<?php

    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

    $query_args = array(
               \'posts_per_page\' => 5,
               \'category_name\' => \'foo\',
               \'paged\' => $paged
    );

    $the_query = new WP_Query($query_args);

    if ($the_query->have_posts()) : while ($the_query->have_posts()) :  
             $the_query->the_post(); ?>

              <?php // any other template tag ?>

              <?php the_title(); ?>

              <?php the_post_thumbnail(); ?>

               <?php the_excerpt(); ?>

<?php endwhile; endif; ?>

<div class="navigation">
           <div class="alignleft"><?php next_posts_link(\'&larr; Older Entries\') ?></div>
           <div class="alignright"><?php previous_posts_link(\'Newer Entries &rarr;\') ?></div>
</div><!-- /.navigation -->

<?php wp_reset_query(); ?>

SO网友:Ciprian

只需在查询中指定类别id

$args = array(
\'cat\'      => 22,
\'order\'    => \'ASC\'
);
query_posts( $args );
请在此处阅读更多信息:https://codex.wordpress.org/Function_Reference/query_posts.

结束