在Auth.php上为不同作者的多个查询分页

时间:2011-10-01 作者:John

我有特殊的要求。作者。php模板被用作作者的配置文件页面,在这里他可以查看自己的帖子和其他作者的帖子。此模板有两个自定义循环来实现此目的。第一个循环用于显示作者自己的帖子,其个人资料正在查看中。因此,如果URL读取“http://example.com/author/john“。第一个循环显示John的帖子。第一个循环的分页效果非常好。

第一个循环的参数:

$args = array(
    \'post_type\'         => \'portfolio_post\',
    \'posts_per_page\'    => 9,
    \'paged\'             => $paged,
    \'orderby\'           => \'date\',
    \'post_status\'       => \'publish\',
    \'author\'            => $author_id
);

$custom_query = $wp_query;
$wp_query = new WP_Query( $args );
?>
第二个循环的参数:
$authors = \'2,3,5\';

$args = array(
    \'post_type\'         => \'portfolio_post\',
    \'posts_per_page\'    => 9,
    \'paged\'             => $paged,
    \'orderby\'           => \'date\',
    \'post_status\'       => \'publish\',
    \'author\'            => $authors
);

$custom_query = $wp_query;
$wp_query = new WP_Query( $args );
?>
第二个循环用于显示其他作者的帖子。问题在于第二个循环的分页。因为,我正在查看John的作者页面WP\\u查询默认由Wordpress设置为仅返回作者John的帖子,而我的第二个循环实际上是查找其他作者的帖子。现在,如果John没有任何帖子,则为获取其他作者帖子的循环分页,如$WP\\u Query->found\\u posts结果“0”。我使用Ajax来显示两个循环的结果,它工作得非常好。

我希望这种行为可以通过使用“pre\\u get\\u posts”挂钩或其他方式进行修改。我使用模板“author.php”也可能是错误的。也许我应该使用不同的模板?

请告知。非常需要这项工作。

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

第一:为什么滥用author.php 是否以这种方式创建模板文件?我建议您考虑为此输出创建一个自定义页面模板。

第二:如果您使用的是多个查询,那么为每个查询指定一个唯一的变量可能会很有帮助。(就个人而言,我会给每个查询一个描述性变量名,而不仅仅是唯一的变量名。)

第三:使用自定义查询时,归档分页变得很棘手。不过,有一种“黑客”方式可以让它发挥作用:

将默认查询移动到临时变量中:例如。

<?php
global $wp_query;
$original_query = $wp_query
?>
取消默认查询:例如。

<?php
$wp_query = null;
?>
将自定义查询移到全局变量中:例如。

<?php
$wp_query = $custom_query;
?>
  1. After you output your pagination template tags, 还原原始查询:
例如。

<?php
$wp_query = $original_query;
?>
此方法将使用应用于全局$wp_query.

结束

相关推荐

Pagination with custom loop

我的问题可能是Pagination not working with custom loop, 但有一种不同。我使用自定义循环来显示flash游戏。我想按类别在游戏页面上分页。类别php:<?php if ($cat) { $cols = 2; $rows = 4; $paged = ((\'paged\')) ? get_query_var(\'paged\') : 1; $post_per_page = $cols * $rows; // -1 s