web-dev-qa-db-fra.com

Créer une recherche avancée avec taxonomies (liste non filtrée)

comme toujours après avoir lutté pendant 3 jours dans mon esprit avec un problème, je décide de demander de l'aide ici.

J'essaie de créer une page de recherche avancée avec des taxonomies et un champ de mot clé. Vous pouvez voir ce que j'ai réellement obtenu http://alianzasuperior.com/empleo/busqueda-avanzada/ (ne paniquez pas, son espagnol, mais pensez comme taxonomies et tout ira bien)

La partie mot clé fonctionne bien. Je peux également créer des pages de taxonomies, par exemple taxonomy-job_type.php, pour gérer une taxonomie individuelle et cela fonctionne également.

Le problème, c’est lorsque j’essaie de chercher dans plusieurs taxonomies et plusieurs termes pour désigner ces taxomies. J'ai essayé de le comprendre avec le plugin scribu "interroger plusieurs taxonomies" mais je ne suis pas capable.

Quelqu'un a fait quelque chose de similaire pour ce que j'essaie de faire?

Toute aide ou indice me sera très utile

1
chifliiiii

comme d’autres fois, après avoir posté ici, j’ai trouvé ma propre question. Peut-être que ce n'est pas la solution la plus intelligente, mais que cela fonctionne pour moi.

J'utilise la nouvelle taxe_query telle que commentée dans http://www.wpmods.com/query-multiple-taxonomies-in-wp-3-1/

Fondamentalement, si je reçois 2 taxonomies avec deux termes par exemple

$job_type='full-time+free-lancer';
$job_cat='designer+programmer';

Je fais ce qui suit:

    $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;
        }

Et puis, si j'ai plus d'un terme, j'utilise la requête personnalisée:

if($custom_query) query_posts($myquery);

Si vous voulez le mélanger à la recherche par mot-clé, faites simplement:

$myquery['s']= $yourKeywordVar;

J'espère que cela aide, je viens de découvrir et jusqu'à présent mes tests fonctionnent bien

3
chifliiiii