我有一个post\\u results过滤器,我想用它来操作从查询返回的结果。假设它应该在第一页的第一篇帖子周围加上星星,在第二页的第二篇帖子周围加上星星,依此类推。
当我看到它在主内容区域工作时,一切看起来都很好,但当它被侧边栏上的“最近发布”小部件触发时,它的行为是主内容所在的页码,而不是侧边栏显示的第一页。例如,如果主要内容在第3页上,则页面上的第三篇文章周围有星星,但“相关文章”小部件中的第三篇文章周围也有星星,即使它实际显示的是第一页的结果。
我的过滤器是用
if (is_home() && is_main_query())
。我不能在\\u中使用\\u loop(),因为过滤器是在调用\\u post()之前启动的,因此尚未进入循环。
回显get\\u query\\u var(\'paged\')和$wp\\u query->query\\u vars[\'paged\')显示主要内容的页码,但如果我进入wp的默认小部件。php我看到它实际上使用了一个侧查询
$r = new WP_Query( apply_filters( \'widget_posts_args\', array( \'posts_per_page\' => $number, \'no_found_rows\' => true, \'post_status\' => \'publish\', \'ignore_sticky_posts\' => true ) ) );
并且回显$r->query\\u vars[\'paged\']会显示正确的页码,即使我的post\\u过滤器已经启动了。相关帖子打印链接时回显,显示is\\u main\\u query()返回true,在\\u中,循环()与主内容块中的情况不同。
我真的很困惑我该如何区分这两种情况。