WordPress从静态页面上的类别帖子查询帖子

时间:2011-10-04 作者:Howdy_McGee

所以我试着只从1个类别中查询一些帖子,它看起来确实有效。我也尝试了get\\u post(),但没有成功,过了一段时间,我就放弃了使用query\\u posts(这显然是一种不好的做法)。这是我的代码:

<div id="primary">
            <div id="content" role="main">
                <?php query_posts(\'slug=cat1\'); ?>
                <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                    <div class="post">
                         <h1>
                            <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
                                <?php the_title(); ?>
                            </a>
                        </h1> 
                        <small><?php the_time(\'F jS, Y\') ?> by <?php the_author_posts_link() ?></small>
                            <br />
                            <br />
                        <div class="entry">
                            <?php the_content(); ?>
                        </div>
                    </div>
                    <hr />
                <?php endwhile; else: ?>
                <p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>
                <?php endif; ?>
            </div><!-- #content -->
        </div><!-- #primary -->
第二个endif; 是从上面我有一个测试,对页面slug。但根据我的理解,query\\u posts应该用该类别中的所有帖子填充$post,但我仍然从未分类和另一个类别中获取帖子,所以它根本不过滤。。。建议?

Edit1 我试过使用cat=0cat=1 而且cat=2 但唯一真正过滤的是cat=1 过滤为未分类。所有其他显示所有帖子。不知道为什么。。。

Edit2 query_posts( array ( \'category_name\' => \'Category1\', \'posts_per_page\' => -1 ) ); 返回时带有“else”语句,表示没有帖子,也没有符合我标准的内容。我直接从抄本上查到的?

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

奇怪的问题!,请尝试以下操作:

确保目标类别不为空\'post_type\'=>\'advertisement\' 例如\'term\'=>\'cars\' 和孩子一起\'cars\'=>\'toyota\'.

在这个例子中,我想明确一点:汽车就像是一个类别,而丰田就像是一个未分类的类别

echo $query_string;;将其放置在页面顶部<?php if ( have_pos... 就在query_posts(..);

如果查询不起作用,请告诉我们查询结果。

SO网友:jose pacheco

当您的query\\u var上没有任何内容时显示所有post的简单代码(输出将为-1以显示所有post)和通过获取query\\u var来显示特定post。

if(get_query_var(\'cat\') == \'\'){
   $cat = (get_query_var(\'cat\')) ? get_query_var(\'cat\') : -1;}
else{
   $cat = (get_query_var(\'cat\'));}
$args = array(\'posts_per_page\' => 5, \'paged\' => $paged, \'cat\' => $cat);
query_posts($args);
希望能对你有所帮助。

Edited: ofc您需要将菜单上的“cat”id传递到URL中。

Edited2:法典页

挂接到“pre\\u get\\u posts”并使用is\\u main\\u query更改主查询http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

这是首选的方式。。。但上面的例子就像一个冠军!

只需确保在完成第二个循环后调用wp\\u reset\\u query()。

结束

相关推荐

Hide password protected posts

如果我创建一篇帖子并将可见性设置为“密码保护”,它仍然会显示在首页和提要中。有没有可能从总体视图中完全隐藏帖子,但仍然允许快速访问某些人,而无需为他们创建帐户?(这在WP 3.0.4中)