我在我的网站的2个页面上有一个搜索栏,在我的归档页面上,我想从搜索中排除一个名为经济学(id-9)的类别。我已将此放在我的功能中。php文件:
function archive_search_filter( $query ) {
if ( $query->is_search && $query->is_main_query() ) {
$query->set( \'category__not_in\' , \'9\' );
}
}
add_filter( \'pre_get_posts\', \'archive_search_filter\' );
它工作得很好,但我只想在名为archive的页面上实现它。如果我尝试使用带有is\\U页(“存档”)的If语句,它将不起作用,我也不确定是否有解决方案。我想知道功能是否正常。php会先加载,然后才能知道它是什么页面,以及是否有其他方法可以让它工作。
最合适的回答,由SO网友:Peter HvD 整理而成
问题是pre_get_posts
在您离开页面后调用,因此您还必须测试是否从那里进行搜索,并且可以使用wp_get_referer()
所以(理论上,很抱歉我没有时间来测试这个)你可以
if ( !is_admin() && $query->is_search() && $query->is_main_query() && wp_get_referer() == "http://www.example.com/archive" ) {
希望有帮助
PS:始终添加!is_admin()
检查以确保您没有影响管理查询。。。皮带和;支架