我正在尝试一些东西,但我对WP\\U查询有问题。
为了在查询中添加一些变体,我在\\u帖子上设置了一个钩子。
add_filter(\'the_posts\', \'query_variation\');
function query_variation($posts, $query = false) {
if (is_search())
{
// Do stuff
}
}
当我在网站上搜索时,它工作得很好。但是,我知道创建这样的ajax搜索:
function ajax_search_123( ){
$search_keyword = esc_attr($_REQUEST[\'query\']);
$args = array(
\'s\' => $search_keyword),
\'post_type\' => \'product\',
\'posts_per_page\' => 3,
);
$products_query = new WP_Query( $args );
// Do stuff with $product_query
}
但是当我用$args实例化WP\\u查询时,is\\u search()不会返回true,所以我要输入if。。。
我能做什么?
谢谢你的帮助
最合适的回答,由SO网友:Rarst 整理而成
你有点困惑$wp_query
全局变量WP_Query
类/对象。$wp_query
是的对象实例WP_Query
, 但并非所有WP_Query
对象与$wp_query
全球的
条件的函数版本,例如is_search()
, 始终对主全局查询执行操作。您不应该在过滤器中使用它们,因为全局状态可能是一回事,而查询实际上是另一回事。
在挂钩内,您应该始终通过其方法检查所提供查询的实例。例如$query->is_search()
.