使用WP_QUERY优化搜索结果

时间:2011-08-02 作者:Egor

我正在尝试修改(优化?)Worpress使用WP\\u查询搜索结果,如前所述in the Codex. 这篇文章中的片段位于搜索模板PHP文件的顶部,所有结果都会相应地显示出来。

当我尝试用我选择的参数附加WP\\u Query数组时,为了创建一个修改后的查询(例如:包含术语用户搜索的帖子,不包括在某个分类中),WP\\u Query完全忽略附加的参数,并再次提供原始搜索结果。

代码如下:

$search = new WP_Query(array( \'taxonomy\' => \'media\', \'field\' => \'image\', \'operator\' => \'NOT IN\'));
我也这样试过,但我觉得完全错了:

<?php
global $query_string;
$query_args = explode("&", $query_string);
$search_query = array();
foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach
$args = array(
        \'tax_query\' => array(
        array(
            \'taxonomy\' => \'media\',
            \'field\' => \'slug\',
            \'terms\' => \'media\',
            \'operator\' => \'NOT IN\'
        )
    ),
    $search_query
);
通常情况如下:

if ( $search->have_posts() ) :
    while ($search->have_posts() ) : $search->the_post(); ?>
当谈到编码时,我不是很流利,但我试图教自己作为CMS的Wordpress的怪癖。我在这个网站上阅读了所有回复,但没有一种方法能帮我做到这一点。

你能看出我做错了什么吗?谢谢

1 个回复
SO网友:Seagyn Davis

您只需将搜索的当前查询与您要添加的部分合并,您已经接近要添加的部分。

我假设您有一个名为media的自定义分类法,并且您特别希望在搜索结果中删除带有术语media(如标签或类别中的术语)的帖子

在您的情况下:

$custom_query = array();
$custom_query[\'tax_query\'][] = array( \'taxonomy\' => \'media\', \'terms\' => array(\'media\'), \'field\' => \'slug\', \'operator\' => \'NOT IN\' );

$args = array_merge( $wp_query->query, $custom_query );
query_posts( $args );

结束

相关推荐

Varying Search Result Pages

我的网站上有两种不同的搜索结果,我想完全改变搜索结果页面的外观。我对搜索表单做了一些修改,但我不确定如何强制它重定向到另一个搜索。php如有任何帮助,将不胜感激<form role=\"search\" method=\"get\" id=\"searchsupport\" action=\"/\"> <label class=\"screen-reader-text\" for=\"s\">Search for:</label> <