使用分类(而不是筛选器列表)创建高级搜索

时间:2011-09-08 作者:chifliiiii

像往常一样,在为一个问题绞尽脑汁三天后,我决定在这里寻求帮助。

我正在尝试创建一个包含分类法和关键字字段的高级搜索页面。你可以看到我实际上得到了什么http://alianzasuperior.com/empleo/busqueda-avanzada/ (不要惊慌,这是西班牙语,但只要把它当作分类法,你就会没事的)

关键字部分工作正常。我还可以创建分类页面,例如taxonomy-job\\u type。php来处理单独的分类法,它也可以工作。

问题是当我尝试在多个分类法中搜索这些分类法的多个术语时。我试图用scribu插件“查询多个分类法”来解决这个问题,但我无法做到。

有人做了和我想做的相似的事?

任何帮助或线索我都将不胜感激

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

像其他时候一样,在这里发帖后,我发现了自己的问题。也许这不是更聪明的解决方案,但它对我有效。

Im使用中注释的新tax\\u查询http://www.wpmods.com/query-multiple-taxonomies-in-wp-3-1/

基本上,如果我得到两个分类法,例如两个术语

$job_type=\'full-time+free-lancer\';
$job_cat=\'designer+programmer\';
我执行以下操作:

    $custom_query=false;
    $myquery[\'tax_query\'] = array( \'relation\' => \'AND\');


        if ($_GET[\'job_type\']){
            $job_type=explode(\'+\',$_GET[\'job_type\']);   
            foreach ($job_type as $k => $name){
                    $job_types[]=$name;                 
            }
            array_push($myquery[\'tax_query\'],array(\'taxonomy\' => \'job_type\',\'terms\' =>$job_types,\'field\' => \'slug\' ,\'operator\' => \'IN\'));
        $custom_query=true;
        }



        if ($_GET[\'job_cat\']){
            $job_cat=explode(\'+\',$_GET[\'job_cat\']);
            foreach ($job_cat as $k => $name){
                $job_cats[]=$name;
            }
            array_push($myquery[\'tax_query\'],array(\'taxonomy\' => \'job_cat\',\'terms\' => $job_cats,\'field\' => \'slug\',\'operator\' => \'IN\'));

        $custom_query=true;
        }
然后,如果我得到多个术语,我会使用自定义查询:

if($custom_query) query_posts($myquery);
如果要将其与关键字搜索混合使用,只需执行以下操作:

$myquery[\'s\']= $yourKeywordVar;
希望这会有所帮助,我刚刚发现,到目前为止,我的测试工作正常

结束

相关推荐