it-swarm.com.de

Wie verwende ich wp_query für die WordPress-Suche?

Ich möchte ein benutzerdefiniertes Suchformular erstellen, um Posts basierend auf den Werten von ungefähr 4 benutzerdefinierten Feldern zu suchen. Ich habe versucht, dies mit wp_query zu erreichen. Mein größtes Problem ist jedoch, dass ich bei der Suche nach Daten in benutzerdefinierten Feldern keine Ergebnisse erhalte - auch nicht nach Daten, von denen ich sicher bin, dass sie existieren. Außerdem kann ich nicht herausfinden, wie ich das normale WordPress-Suchfeld "Schlüsselwort" entfernen und nur meine vier Kombinationsfelder verwenden kann.

Hier ist der Code aus meiner search.php-Datei: http://pastie.org/private/jhgsmaolvjyswyhsfphlfa
und hier ist der Code aus meiner searchform.php: pastie.org/private/o3hrtqajh8hbkiht1nyoba
Hier ist ein Bild des Formularlayouts: http://i.stack.imgur.com/N8ncg.png

Vielen Dank.

1
3ph

Sie müssen Ihre Suchanfrage mit einer neuen WP Abfrage kombinieren ...

Das wäre ungefähr so ​​in deiner 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

Sie können immer pre_get_posts oder posts_where hooks verwenden.

Hier ist ein Beispiel für die Verwendung von pre_get_posts zum Ausschließen einiger Posts aus den Suchergebnissen: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Exclude_Pages_from_Search_Results

Es ist die bessere Lösung, da Sie keine weitere redundante SQL-Abfrage durchführen.

0