确定您连接的是哪个环路;主要环路还是次要环路? 时间:2011-06-20 作者:mwaterous 确定我在哪个循环中最有效的方法是什么?我有几个插件,通过连接到WP_Query::get_posts(), 通过通常的嫌疑犯posts_where, posts_join, etc. 但我不想影响每个页面上的每个循环,所以现在我正在运行debug_backtrace() 检查是否存在the main() 或query_posts() 根据需要发挥作用。必须有一种更有效的方法来识别每个页面上的主循环和子循环。当我仔细研究查询变量和请求的其他方面时,总是会遗漏一些东西,这些东西对每一个都是独一无二的。你打算怎么做? 2 个回复 SO网友:Michal Mau 只是一个新方法的快速更新is_main_query() 已在WP 3.3中介绍。示例:add_action( \'pre_get_posts\', \'foo_modify_query_exclude_category\' ); function foo_modify_query_exclude_category( $query ) { if ( $query->is_main_query() && ! $query->get( \'cat\' ) ) $query->set( \'cat\', \'-5\' ); } 资源:WPDevel:New API in 3.3: is_main_query()法典参考:is_main_query()相关的Trac Ticket #18677 SO网友:Chip Bennett 如果正确调用二次回路(即,不干扰query_posts(), 通过设置变量$myloop 等于get_posts() 或new WP_Query), 然后识别所述循环就像引用变量一样简单。如果需要从主循环中调用第二个循环setup_postdata() 在辅助循环中,您可能需要调用wp_reset_query() 关闭辅助循环时,模板标记将恢复为应用于主循环。 结束 文章导航