我使用以下方法创建了作者页面:
<?php
if(isset($_GET[\'author_name\'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>
然后是一个标准循环,其中显示该作者发布的所有帖子的标题。我试图根据帖子所属的类别(1、2或3)来分隔帖子的显示,因此我尝试使用
<?php query_posts(\'cat=1\'); ?>
但是,我所有的博客帖子都会显示出来,而不仅仅是那个作者的。肯定是出了什么问题。
我知道,当每个帖子有多个循环时,我必须使用自定义查询,但考虑到仅使用一个标准查询和“cat”过滤器不起作用,我有点不知所措。
最合适的回答,由SO网友:t31os 整理而成
如果您使用的是作者模板,则完全不需要设置作者查询参数,它们将在作者页面上的查询对象中设置就绪。。
此外,您还可以通过迭代已有的查询、提取类别并将与给定类别关联的帖子ID存储在数组中,从而避免创建大量查询(当前每个类别一个查询)。第一次迭代用于构建ID数组,该数组除以类别名称/ID(无论您喜欢什么),然后倒带查询,迭代帖子,继续(跳过)与新构建的类别ID(或名称)数组中的第一个类别不匹配的结果。然后再次倒带循环,然后针对新数组中的每个类别再次迭代,当帖子与当前类别迭代不匹配时继续(跳过)帖子。
在你看到它之前,这并不是什么真正有意义的事情,如果你将你的帖子分类为多个类别(这些类别可以在帖子之间相交),它会变得更加复杂,但它对当前页面有效(无需任何其他查询)(它显然不会对整个结果集进行排序,因此,虽然给定页面将进行排序,但总体排序不会跨越结果集的所有页面的总和)。
如果你认为上面的方法听起来很有用,而且你对前面提到的问题并不在意,那么我不介意提供一个例子。