it-swarm.com.de

Benutzerdefinierte Suche: nach Post-Daten und Post-Metadaten?

Ich habe Probleme mit einer WordPress-Suchfunktion. Vielleicht hilft es nur, wenn mir jemand erklären kann, wie die eingebaute WordPress-Funktion funktioniert. Aber hier ist was ich will:

  • Zwei Suchfelder, nach Name und nach Ort
  • Das erste Feld sollte alle allgemeinen Post-Daten (nur Posts) + Kategorien prüfen
  • Das zweite Feld sollte nur die benutzerdefinierten Felder des Posts überprüfen
  • Es muss nur ein Feld ausgefüllt werden

Ist das überhaupt möglich oder muss ich natives PHP + SQL verwenden? Wenn es möglich ist, können Sie mir bitte einen Hinweis geben, wo ich anfangen soll?

5
tbleckert

Die integrierte WP-Suche sieht wie folgt aus: only a Titel und Inhalt von Posts/Pages, not durch andere Elemente wie benutzerdefinierte Felder und den Inhalt von Shortcodes. Es gibt eine Reihe von Plug-ins, die benutzerdefinierte Felder durchsuchen:

http://wordpress.org/extend/plugins/wp-custom-fields-search/

http://wordpress.org/extend/plugins/search-everything/

http://wordpress.org/extend/plugins/relevanssi/ ​​

Es gibt auch einen Filter apply_filters_ref_array(), mit dem Plugins den Suchabschnitt der Datenbankabfrage kontextuell hinzufügen/entfernen/ändern können.

Zu Ihrer Information, die Suche ist in query.php definiert und sieht folgendermaßen aus:

...if ( !empty($q['s']) ) ... ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')

Titel und Inhalt sind also die einzigen Dinge in der Standardsuche.

6
hearvox

Sie können die Suche anpassen, indem Sie eine eigene Suchvorlage erstellen und WP_Query verwenden. In den meisten Fällen gibt es genug Parameter, um das zu tun, was Sie wollen, Sie müssen nicht in die Datenbank eintauchen.

Beispiel: Erstellen einer benutzerdefinierten Suchvorlage .

Wenn Sie etwas brauchen, das außerhalb der Möglichkeiten von WP_Query liegt, müssen Sie kein benutzerdefiniertes PHP/SQL-Programm ausschalten. Sie können die WPDB-Klasse von WordPress verwenden, um mit der Datenbank zu interagieren .

1
Wyck