web-dev-qa-db-fra.com

Comment rechercher dans les taxonomies spécifiques dans Wordpress

J'essaie de rechercher des articles dans des taxonomies spécifiques, mais chaque fois que je le fais, j'obtiens des résultats de toutes les autres pages au lieu de la recherche par Wordpress dans la catégorie sélectionnée dans la taxonomie.

J'ai nommé ma taxonomie: "publication_categories". Il contient toutes les catégories pour un type de publication personnalisé que j'ai nommé "publication". C'est le code que j'ai pour mon custom-search.php:

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<div class="alignleft">
<select name="taxonomy">
<option value="0">Select...</option>
<?php
$theterms = get_terms('publication_categories', 'orderby=name');
foreach ($theterms AS $term) :
    echo "<option value='".$term->slug."'".($_POST['publication_categories'] == $term->slug ? ' selected="selected"' : '').">".$term->name."</option>\n";
endforeach;
?>
</select>
</div>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
<input type="submit" id="searchbutton" value="Search" class="btn" />
</form>
1

Je vois quelques problèmes avec votre code.

  1. le champ post_type manque dans votre formulaire.
  2. le nom de la liste déroulante de taxonomie doit être le nom de votre taxonomie personnalisée.
  3. la méthode de formulaire est définie sur GET mais vous cochez la case sélectionnée avec POST.

alors votre formulaire devrait ressembler à quelque chose comme ça:

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
    <div class="alignleft">
        <select name="publication_categories">
            <option value="0">Select...</option>
            <?php
            $theterms = get_terms('publication_categories', 'orderby=name');
            foreach ($theterms AS $term) :
                echo "<option value='".$term->slug."'".($_GET['publication_categories'] == $term->slug ? ' selected="selected"' : '').">".$term->name."</option>\n";
            endforeach;
            ?>
        </select>
    </div>
    <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
    <input type="hidden" name="post_type" value="publication" />
    <input type="submit" id="searchbutton" value="Search" class="btn" />
</form>
2
Bainternet

Peut-être cela ajouté à votre formulaire?

<input type="hidden" name="post_type" value="publication" />
1
Carpy