在作者页面中显示按类别分隔的帖子

时间:2010-11-29 作者:Sergio Majluf

我使用以下方法创建了作者页面:

 <?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”过滤器不起作用,我有点不知所措。

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

如果您使用的是作者模板,则完全不需要设置作者查询参数,它们将在作者页面上的查询对象中设置就绪。。

此外,您还可以通过迭代已有的查询、提取类别并将与给定类别关联的帖子ID存储在数组中,从而避免创建大量查询(当前每个类别一个查询)。第一次迭代用于构建ID数组,该数组除以类别名称/ID(无论您喜欢什么),然后倒带查询,迭代帖子,继续(跳过)与新构建的类别ID(或名称)数组中的第一个类别不匹配的结果。然后再次倒带循环,然后针对新数组中的每个类别再次迭代,当帖子与当前类别迭代不匹配时继续(跳过)帖子。

在你看到它之前,这并不是什么真正有意义的事情,如果你将你的帖子分类为多个类别(这些类别可以在帖子之间相交),它会变得更加复杂,但它对当前页面有效(无需任何其他查询)(它显然不会对整个结果集进行排序,因此,虽然给定页面将进行排序,但总体排序不会跨越结果集的所有页面的总和)。

如果你认为上面的方法听起来很有用,而且你对前面提到的问题并不在意,那么我不介意提供一个例子。

SO网友:Sergio Majluf

以更简单的方式解决

我需要显示的每个类别都有一个循环,查询是使用以下方法构建的:

<?php query_posts(\'cat=1&author=\'.$curauth->ID;); ?>

结束

相关推荐

致命错误:对非对象调用成员函数Query()

在下面的代码(来自我的functions.php)中,我试图从wp\\u postmeta表中创建一个项目数组,其中meta\\u键为“\\u wp\\u attached\\u file”。我收到一个错误:致命错误:对非对象调用成员函数query()查询有什么问题?$excludeImages = array(); $excludeImages = $wpdb->query(\"SELECT meta_value FRO