如何使用Pre_Get_Posts来定位默认的最近帖子和最近评论小部件? 时间:2012-06-12 作者:Ana Ban 我在函数中添加了以下内容。php:add_action(\'pre_get_posts\', \'keyl_get_emp_posts\'); function keyl_get_emp_posts($query) { if ($query->is_main_query()) $query->set(\'post_type\', \'employee\'); } 到目前为止,它有效地过滤掉了搜索结果。不过,默认的小部件“最近的帖子”和“最近的评论”并没有改变。有什么好处? 2 个回复 SO网友:MZAweb 在每个查询之前执行pre\\u get\\u posts。您的$query->is\\u main\\u query()使此代码仅更改主查询的查询。因此,如果您在归档页面中,您只修改归档帖子,而不修改任何其他查询(小部件、菜单等)。但是请注意,您在那里添加的代码将更改所有主要查询的查询。因此,如果您转到另一个职位类型档案(类别等),您将修改查询以获取post\\u type=employee SO网友:s_ha_dum 两者"Recents Posts" widget 以及"Recent Comments" widget 提供一个过滤器,您可以使用它来更改查询,它们可以方便地接受相同的参数。function alter_recent_widget_post_type_wpse_54931($args) { $args[\'post_type\'] = \'employee\'; return $args; } add_filter(\'widget_posts_args\',\'alter_recent_widget_post_type_wpse_54931\'); add_filter(\'widget_posts_args\',\'alter_recent_widget_post_type_wpse_54931\'); 这将在每次运行小部件时改变它们,因此如果您需要小部件在多个上下文中运行,您将需要更复杂的东西。 结束 文章导航