web-dev-qa-db-fra.com

Rechercher un type de message personnalisé et des taxonomies

Le site que je construis comporte un élément de répertoire, qui contient de nombreuses listes d'entreprises. c'est un type de message personnalisé. Il a une taxonomie personnalisée appelée Métiers sous laquelle sont différents types d’entreprises, par exemple plombiers, électriciens, décorateurs, comptables, etc. J'ai écrit un formulaire de recherche et l'ai mis dans searchform.php, qui est ensuite appelé par get_search_form(), le voici:

<form role="search" class="main-search" action="<?php bloginfo('home') ?>" method="get">
    <div class="search-container">
        <input type="text" class="main-search-field" placeholder="Search for a service..."  name="s" id="s">
    </div>
    <input type="hidden" name="post_type" value="directory">
    <div class="submit-container">
        <button type="submit" class="main-submit-btn">Search</button>
    </div>
</form>

Comme vous pouvez le constater, la recherche a été réduite à mon type de publication personnalisée ("répertoire"), mais je ne sais pas comment la réduire davantage. Essentiellement, lorsque le texte est entré dans la zone de recherche et que l'utilisateur appuie sur Entrée, je souhaite qu'il recherche dans tous mes termes commerciaux au lieu de rechercher des titres/contenus d'articles. Est-ce que quelqu'un sait comment je m'y prendrais?

Merci pour toute aide :)

1
Tom Oakley

Pour l'instant, je viens de rediriger la chaîne de recherche par défaut (www.sitedomain.com/?s=keyword) vers www.sitedomain.com/trade/keyword (le commerce est ma taxonomie personnalisée) bien que je sois à peu près sûr que ce n'est pas la bonne ou la meilleure façon de le faire, ce serait donc bien si quelqu'un sinon a une meilleure solution. Voici le code pour rediriger la chaîne de recherche:

function redirect_search() {
    if ( is_search() && ! empty( $_GET['s'] ) ) {
        wp_redirect( home_url( "/trade/" ) . urlencode( get_query_var( 's' ) ) );
        exit();
    }
} add_action( 'template_redirect', 'redirect_search' );
1
Tom Oakley