WordPress:如何仅显示特定类别的帖子?

Posted

技术标签:

【中文标题】WordPress:如何仅显示特定类别的帖子?【英文标题】:WordPress: How to display only posts that are in a certain category? 【发布时间】:2010-12-03 16:45:48 【问题描述】:

我对 WordPress 还很陌生,但花了大约 50 多个小时来研究它,尝试了一些东西等等,感觉我现在已经掌握了它。..

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

这是我的例子:http://dev.jannisgundermann.com/zoeikin/graphic-design/typographic-posters

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

The post direct link.

类别 ID 为“3”,类别名称为“typographic-posters”。

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

<?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 类别的过滤。

感谢阅读,

詹尼斯

【问题讨论】:

【参考方案1】:

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

获得后,只需使用正常的 WordPress 循环访问这些帖子。

【讨论】:

谢谢,这很好用。不敢相信我自己没有找到这个:) 再次感谢。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

一旦获得,只需使用正常的 WordPress 循环来访问这些 帖子。

效果很好,但请确保您进入设置 > 阅读并将帖子页面设置为 -- 选择 -- 选项,否则它将覆盖此查询并将所有最近的帖子转储到那里,无论类别如何。

【讨论】:

【参考方案4】:

只需在循环前添加:

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

这将强制循环显示来自类别 3 (cat=3) 的 5 个帖子 (showposts=5)。

【讨论】:

【参考方案5】:

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

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

【讨论】:

这看起来确实是个不错的方法,但我不完全确定是否希望页面 slug 成为 domain.com/category-3.php 或者这是可定制的?【参考方案6】:

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

让您知道这些答案的来源...您还可以使用 query_posts 执行更多有趣的功能。

【讨论】:

感谢您的链接。肯定会更深入地研究法典。【参考方案7】:

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

【讨论】:

看起来不错的插件,一定会试一试。谢谢!【参考方案8】:

我已使用以下方法按类别 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; 

【讨论】:

【参考方案9】:

感谢您分享您的想法,这是一个很棒的想法。通常您只需将主题的 index.php 或 category.php 复制到 category-3.php 并根据您需要的任何自定义调整该模板

【讨论】:

以上是关于WordPress:如何仅显示特定类别的帖子?的主要内容,如果未能解决你的问题,请参考以下文章

从 WordPress 中的特定类别获取置顶帖子

如何在 wordpress 中显示自定义帖子类别名称列表

JavaScript Wordpress:仅显示一个类别的帖子

PHP Wordpress - 仅在特定类别的第一页上显示精选帖子

从特定的 Wordpress 类别中提取帖子

在 Wordpress 中,如何将帖子限制为仅一个类别复选框?