如何将特定页面上的搜索限制为仅返回针对自定义分类的结果?

时间:2015-08-24 作者:two7s_clash

在特定页面上,我希望只对来自两个自定义分类法的术语执行搜索。不是内容或标题。也就是说,用户直接搜索分类术语。

我试图做的是完全重写搜索查询,但它似乎不起作用。

function search_filter_get_posts($query) {
    if ( !$query->is_search )
        return $query;

    $terms = explode(",", $query->query[\'s\']);

    $taxquery = array(
        \'post_type\' => \'eproduct\',
        \'tax_query\' => array(
            \'relation\' => \'OR\',
            array(
                \'taxonomy\' => \'product-type\',
                \'field\'    => \'slug\',
                \'terms\'    => $terms,
            ),
            array(
                \'taxonomy\' => \'product-features\',
                \'field\'    => \'slug\',
                \'terms\'    => $terms,
            ),
        ),
    );
;
 $query = new WP_Query( $taxquery );

}
add_action( \'pre_get_posts\', \'search_filter_get_posts\' );

2 个回复
SO网友:user86037

您没有返回新的$query; 这就是为什么它对你不起作用。

$query = new WP_Query( $taxquery );    
return $query;

SO网友:Domain

我认为,问题是您只需将过滤查询放入$query 变量,但未在主查询中设置它,即。$query->set()

看看这在代码中是否有效-

$query->set( \'tax_query\', $taxquery );

而不是

$query = new WP_Query( $taxquery );

结束

相关推荐

Search query with Ajax

我正在运行一个$wpdb 选择查询并从文本框中获取其参数。结果显示只要我按下搜索按钮,但我想用Ajax做同样的事情,而不刷新页面。我什么都试过了,但页面仍在刷新。jQuery代码:jQuery(document).ready(function() { jQuery(\"#Submityourskill\").click(function(){ jQuery.post(yes.ajaxurl,{action : \'doit\'},