我有特殊的要求。作者。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”也可能是错误的。也许我应该使用不同的模板?
请告知。非常需要这项工作。
最合适的回答,由SO网友:Chip Bennett 整理而成
第一:为什么滥用author.php
是否以这种方式创建模板文件?我建议您考虑为此输出创建一个自定义页面模板。
第二:如果您使用的是多个查询,那么为每个查询指定一个唯一的变量可能会很有帮助。(就个人而言,我会给每个查询一个描述性变量名,而不仅仅是唯一的变量名。)
第三:使用自定义查询时,归档分页变得很棘手。不过,有一种“黑客”方式可以让它发挥作用:
将默认查询移动到临时变量中:例如。
<?php
global $wp_query;
$original_query = $wp_query
?>
取消默认查询:例如。
<?php
$wp_query = null;
?>
将自定义查询移到全局变量中:例如。
<?php
$wp_query = $custom_query;
?>
- After you output your pagination template tags, 还原原始查询:
例如。
<?php
$wp_query = $original_query;
?>
此方法将使用应用于全局
$wp_query
.