web-dev-qa-db-fra.com

Comment utiliser wp_query pour la recherche WordPress?

Je souhaite créer un formulaire de recherche personnalisé pour rechercher des publications en fonction des valeurs d'environ 4 champs personnalisés. J'ai essayé d'utiliser wp_query pour y parvenir, mais jusqu'à présent, mon plus gros problème est que je n'obtiens aucun résultat lors de la recherche de données dans des champs personnalisés, même pour des données dont l'existence, j'en suis sûr. En outre, je ne vois pas comment supprimer le champ de recherche "mot clé" normal de WordPress et utiliser uniquement mes quatre champs de liste déroulante.

Voici le code de mon fichier search.php: http://pastie.org/private/jhgsmaolvjyswyhsfphlfa
et voici le code de mon searchform.php: pastie.org/private/o3hrtqajh8hbkiht1nyoba
Voici une image de la présentation du formulaire: http://i.stack.imgur.com/N8ncg.png

Merci.

1
3ph

Vous devez associer votre requête de recherche à une nouvelle WP Query ...

Ce serait quelque chose comme ça, sur votre search.php

<?php

global $wp_query; // get the global object

$thesearch = get_search_query(); // get the string searched

// merge them with one or several meta_queries to meet your demand
$args = array_merge( $wp_query->query, array( 
   'meta_query' => array(
    array(
        'key' => 'field_to_seach',
        'value' => $thesearch,
        'compare' => 'IN'
    )
)
    ));
query_posts( $args ); // alter the main query to include your custom parameters

?>
2
moraleida

Vous pouvez toujours utiliser pre_get_posts ou posts_where hooks.

Voici un exemple d'utilisation de pre_get_posts pour exclure certains messages des résultats de la recherche: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Exclude_Pages_from_Search_Results

C'est une meilleure solution, car vous ne ferez pas d'autre requête SQL redondante.

0
Krzysiek Dróżdż