$wp_query when new WP_Query

时间:2014-07-17 作者:XciD

我正在尝试一些东西,但我对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。。。

我能做什么?

谢谢你的帮助

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

你有点困惑$wp_query 全局变量WP_Query 类/对象。$wp_query 是的对象实例WP_Query, 但并非所有WP_Query 对象与$wp_query 全球的

条件的函数版本,例如is_search(), 始终对主全局查询执行操作。您不应该在过滤器中使用它们,因为全局状态可能是一回事,而查询实际上是另一回事。

在挂钩内,您应该始终通过其方法检查所提供查询的实例。例如$query->is_search().

结束

相关推荐

Cannot override hooks.php

我为网络黑猩猩的“反应主题”构建了一个儿童主题。我想换一个钩子。所以我想我需要钩子。我的孩子主题中的php文件。所以我从父母那里复制了它。我制定了相同的层次结构(我想这是正确的方法)。wp-content/[my_child_theme]/core/includes/hooks.php 将文件复制到主题根目录没有帮助。我还试图重新创建这个关键钩子。我把代码放在子函数中。php文件,但它也不起作用,因为挂钩发生在主题内容之后(只是我的asumtion)。所以问题很简单:如何覆盖父主题的挂钩。php