web-dev-qa-db-fra.com

Comment trouver un nom de taxonomie en utilisant uniquement la taxonomie TERM ID (ou nom de taxonomie)

Je développe une fonction de filtres de recherche multiples et je dois filtrer la page de résultats de recherche.

J'ai 3 types de messages personnalisés, chacun avec sa taxonomie personnalisée. J'ai donc les types de messages personnalisés:

  1. CPT livres;
  2. CPT fruits;
  3. CPT des voitures

Une taxonomie personnalisée est associée à chacun de ces types de publication personnalisés. Donc nous avons

  1. CPT livres avec taxonomie livres-catégorie
  2. CPT fruits avec taxonomie catégorie de fruits
  3. CPT voitures avec taxonomie voitures-catégorie

Et chacune de ces taxonomies personnalisées a deux termes. Donc nous avons:

  1. CPT livres avec taxonomie livres-catégorie, avec termes: drame, crime, aventure
  2. CPT fruits avec taxonomie catégorie de fruits avec termes: Pomme, orange, banane
  3. CPT voitures avec taxonomie voitures-catégorie avec termes: mercedes, ford

Dans searchform.php, j'ai l'entrée de recherche ET une fonction qui récupère TOUS les termes de TOUTES mes taxonomies personnalisées et les met dans un menu déroulant.

Donc, le HTML ressemble à ceci:

<ul> 
    <li><input type="text" value="" name="s" class="field s"></li>
    <li>Categories:</li>    
    <li>
        <select class="postform" id="cat" name="cat">
            <option selected="selected" value="0">All categories</option>
            <option value="99">Adventure</option>
            <option value="41">Apples</option>
            <option value="23">Banana</option>
            <option value="31">Crime</option>
            <option value="19">Drama</option>
            <option value="103">Ford</option>
            <option value="24">Mercedes</option>
            <option value="67">Orange</option>
        </select>
    </li>
    <li><input type="submit" id="searchsubmit" value="Search" /></li>
</ul>

Lorsqu'un utilisateur laisse l'entrée de recherche vide, mais sélectionne un terme de taxonomie dans cette liste déroulante, la page de recherche doit filtrer les résultats de la recherche afin d'afficher uniquement les types de publication personnalisés classés sous ce terme de taxonomie.

Le grand mystère ici, comment puis-je trouver un moyen d’obtenir le nom TAXONOMY à utiliser dans la classe WP_Query, en donnant le fait que j’ai le TERM NAME et le TERM ID (le champ "valeur" de mon formulaire déroulant). Je pourrais le faire facilement dans taxonomy.php, mais me voilà dans search.php!

Toute aide serait grandement appréciée :)

Mieux, Gabriela

3
Gabriela

Pourquoi ne pas utiliser la fonction get_term ? Si vous regardez le code que SQL utilise il est comme suit:

$_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %d LIMIT 1", $taxonomy, $term) );

qui devrait être exactement ce dont vous avez besoin!

3
mor7ifer

dans la valeur des options, vous pouvez utiliser quelque chose comme ça

<option value="tax_slug_a[ 103 ]">Ford</option>
<option value="tax_slug_a[ 24 ]"> Mercedes</option>
<option value="tax_slug_b[ 67 ]"> Orange</option>

la soumission de formulaire résultante vous donnerait un tableau contenant à la fois l'information de slug de taxe et l'identifiant de terme choisis.

2
dwenaus