WordPress:如何只显示某个类别的帖子?

时间:2009-10-04 06:33:17

标签: php wordpress list filter categories

我对WordPress很陌生,但花了大约50个小时的时间研究它,尝试了一些事情,感觉我现在对它有了很好的处理......

然而,我根本无法工作的一件事就是让一个页面吐出某个类别的帖子列表。

以下是我的示例:http://dev.jannisgundermann.com/zoeikin/graphic-design/typographic-posters

我有一个帖子,如果我直接使用它可以正常工作,但不会显示在此页面上。

The post direct link.

类别ID为“3”,而类别名称为“印刷海报”。

我有一个印刷海报页面的自定义页面模板,如下所示:

<?php
/*
Template Name: Typographic Posters
*/
?>

<?php get_header(); ?>
<?php get_sidebar(); ?>

<?php if (in_category('3')): ?>
<div class="post">

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>


  <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
   <div class="post-description">
    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>
   </div>
   <?=get_image('flutter-image');?>
  </div>


    <?php endwhile; else: ?>
     <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
    <?php endif; ?>

</div>
<?php endif; ?>

<?php get_footer(); ?>

使用此代码,但只显示页面获取标题,侧边栏和其他内容..

如果有人可以帮助我,那将真正帮助我处理对wordpress类别的过滤。

感谢阅读,

Jannis

9 个答案:

答案 0 :(得分:11)

in_category只能在单个页面的循环外工作。我建议使用query_posts函数来解决这个问题。您可以使用query_posts('cat=3')query_posts('category_name=typographic-posters')来获取您要查找的帖子。

获得后,只需使用普通的WordPress循环即可访问这些帖子。

答案 1 :(得分:1)

最简单的方法是创建一个名为category-3.php的文件,并使用普通index.phpcategory.php文件中的标准代码。 Wordpress将负责仅从id = 3及其子类别的类别中提取帖子。

答案 2 :(得分:1)

  

in_category只能在单个页面上的循环外工作。一世   建议使用query_posts函数来解决这个问题。你可以   使用query_posts('cat = 3')或   query_posts('category_name = typographic-posters')来获取你的帖子   正在寻找。

     

获得后,只需使用普通的WordPress循环即可访问这些内容   讯息。

这非常有效,但请确保您进入设置&gt;阅读并将帖子页面设置为 - 选择 - 选项,否则它将覆盖此查询并转储所有最近的帖子,无论其类别如何。

答案 3 :(得分:1)

我已使用以下方法按类别ID过滤了帖子:

               query_posts('cat=1&showposts=3');
                if (have_posts()) : while (have_posts()) :

                // if(1) {
                    //echo the_category_ID();
                 the_post();
                /**
                 * The default post formatting from the post.php template file will be used.
                 * If you want to customize the post formatting for your homepage:
                 * 
                 *   - Create a new file: post-homepage.php
                 *   - Copy/Paste the content of post.php to post-homepage.php
                 *   - Edit and customize the post-homepage.php file for your needs.
                 * 
                 * Learn more about the get_template_part() function: http://codex.wordpress.org/Function_Reference/get_template_part
                 */

                $is_post_wrap++;
                    if($is_post_wrap == '1') {
                        ?><div class="post-wrap clearfix"><?php
                    }
                    get_template_part('post', 'homepage');

                    if($is_post_wrap == '3') {
                        $is_post_wrap = 0;
                        ?></div><?php
                    }



            endwhile;

            else :
                get_template_part('post', 'noresults');
            endif; 

答案 4 :(得分:0)

只需在循环之前添加:

<?php query_posts="cat=3&showposts=5">

这会强制循环显示3类(cat = 3)中的5个帖子(showposts = 5)。

答案 5 :(得分:0)

我会提出第二个Eimantas的建议。 Template Hierarchy将使用category-3.php来显示该类别中的帖子。通常,您只需将主题的index.php或category.php复制到category-3.php,然后针对您需要的任何自定义调整该模板。此外,类别模板将更好地支持帖子的分页。

但是如果您需要坚持使用页面来显示这些帖子,请参阅Page of Posts example.

答案 6 :(得分:0)

http://codex.wordpress.org/Template_Tags/query_posts

只是让你知道这些答案来自哪里......你可以用query_posts做更多有趣的功能。

答案 7 :(得分:0)

如果您希望能够在不通过代码的情况下更改显示的类别,此插件也可以帮助您: http://wordpress.org/extend/plugins/advanced-category-excluder/

答案 8 :(得分:-1)

感谢您分享您的想法,这是一个伟大的想法。通常,您只需将主题的index.php或category.php复制到category-3.php,然后针对您需要的任何自定义调整该模板