我在一个有几种帖子类型的网站上工作,确切地说是4种,我正在尝试设置搜索结果页面,以便按帖子类型对结果进行筛选/排序。
例如,当一个人用搜索结果搜索他们要带到页面的一个词时,会显示从所有帖子类型中找到的所有帖子,但在顶部有不同的帖子类型名称链接,这些链接将对结果进行排序,并仅显示相应帖子类型的帖子。现在,我在搜索结果页面上为每个帖子类型设置了几个循环,但当我测试它时,这些循环都显示了相同的结果,即使每个循环都有一个针对不同帖子类型的查询。
如何修复循环,使其仅显示该帖子类型的搜索结果?我不想有不同的搜索表单或重置查询,最终丢失搜索词。以下是页面中的一些代码--http://pastebin.com/L9zEw1cn
第一个循环是默认的循环,它将显示所有结果,第二个循环是我尝试用于其余post类型的循环。
那么,是否有办法修复第二个循环,使其只显示该帖子类型的搜索结果?
任何帮助都将不胜感激。谢谢
回复
SO网友:Mateusz Hajdziony
在第二个循环中,您正在为posts查询设置参数,但您没有在任何地方使用它们。您应该放置query_posts( $args )
在第二个循环之前。您也可以使用get_posts 功能或WP_Query 班
编辑:来自page about query_posts function on WordPress codex:
query\\u posts()是更改WordPress用于显示帖子的默认查询的最简单但不是首选或最有效的方法。使用query\\u posts()显示不同于通常显示在特定URL上的帖子。现在,在您的代码中,您在相同的帖子中循环了两次。第二个循环与第一个循环完全相同。
现在,如果你query_posts()
在第二个循环之前有不同的参数,如下所示:
$args = array( \'post_type\' => \'videos\', \'s\' => $s );
query_posts( $args );
if(have_posts()) :
while(have_posts()) :
the_post();
// Display the post
endwhile; endif;
wp_reset_postdata(); ?>
您将循环浏览不同的帖子集。