显示特定类别中的内容

时间:2014-05-21 作者:user3615681

我试图让我的新闻页面只显示一个类别的内容(数字3),但我似乎无法让它工作。它不只是显示类别3中的帖子,而是显示所有类别中的帖子。

这是我的代码:

<?php get_header(); ?>

            <div class="content news_page">

                       <h1>Latest News</h1>     

                       <?php $args = array(
                            \'post_type\' => \'post\' ,
                            \'orderby\' => \'date\' ,
                            \'order\' => \'DESC\' ,
                            \'posts_per_page\' => 6,
                            \'category\'         => \'3\',
                            \'paged\' => get_query_var(\'paged\'),
                            \'post_parent\' => $parent
                       ); ?>
                       <?php query_posts($args); ?>




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

                                <div class="large-4 medium-4 small-12 columns">
                                    <div class="latest_news_cont">
                                    <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>

                                    <a href="<?php the_permalink() ?>"><h5><?php the_title(); ?></h5></a>
                                    <?php the_excerpt(); ?>
                                    <p style="text-align:center;"><a href="<?php the_permalink() ?>" class="readmore_news">Read more</a></p>
<br>
<div class="clear"></div>
                                       </div>
                                    </div>

                            <?php endwhile; ?>
                        <?php endif; ?>


<div class="clear"></div>

            </div><!--end of content-->



<div class="clear"></div>

<?php get_footer(); ?>

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

The argument isn\'t category, it is cat. 查询失败,因为您使用的参数不存在。

$args = array(
  \'post_type\' => \'post\' ,
  \'orderby\' => \'date\' ,
  \'order\' => \'DESC\' ,
  \'posts_per_page\' => 6,
  \'cat\'         => \'3\',
  \'paged\' => get_query_var(\'paged\'),
  \'post_parent\' => $parent
); 
$q = new WP_Query($args);
if ( $q->have_posts() ) { 
  while ( $q->have_posts() ) {
    $q->the_post();
    // your loop
  }
}
请注意,我已将您的query_posts() 进入一个新的WP_Query 对象不使用query_posts(), 曾经就连法典也这么说。

注意:此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。任何现代的WP代码都应该使用更可靠的方法,比如使用pre\\u get\\u posts钩子。

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

还要注意的是,我删除了不必要的PHP开始和结束标记,并格式化了代码以提高可读性。那个alternative control structure syntax 根据我的经验,这是一个失败的公式。

SO网友:dev

获取前五篇特定类别的帖子

<?php
        // the query
        $the_query = new WP_Query(array(
            \'category_name\' => \'post_category_name\',
            \'post_status\' => \'publish\',
            \'posts_per_page\' => 5,
        ));
        ?>

        <?php if ($the_query->have_posts()) : ?>
            <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
                <?php the_category(); ?>
                <?php the_title(); ?>
                <?php the_excerpt(); ?>
                <?php the_post_thumbnail(); ?>
                <?php the_content(); ?>

            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>

        <?php else : ?>
            <p><?php __(\'No News\'); ?></p>
        <?php endif; ?>

SO网友:Matt Royal

我个人宁愿这样做。

而不是:

\'category\' => \'3\',
将其替换为:

\'category_name\' => \'my-category-slug\'
很明显,找到你的类别slug的名称并替换为“我的类别slug”。

正如@s-ha-dum所提到的,最好不要使用此方法,而是使用WP\\u查询方法。您可以在WordPress Codex中看到:http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

SO网友:Brad Dalton

在函数文件中添加此代码:

function wpsites_display_one_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( \'cat\', \'3\' );
    }
}
add_action( \'pre_get_posts\', \'wpsites_display_one_category\' );
更改is\\U home()conditional tag 如果需要,匹配您的新闻页面或帖子页面循环。无论您在“设置”>“阅读”中设置了什么。

SO网友:Purnendu Sarkar

你应该改变

\'category\'         => \'3\',
在代码中输入。

\'cat\' => \'3\',

结束

相关推荐

Order posts by category name

有没有办法按类别名称排序帖子?我试过了$args = array( \'post_type\' => \'dlm_download\', \'posts_per_page\' => 10, \'paged\' => $paged, \'order_by\'=> \'cat\', \'order\' => \'ASC\' ); 但它并没有真正起作用,请有人给我一个提示好吗?