Ich habe einen benutzerdefinierten Beitragstyp erstellt und ihm einige benutzerdefinierte Felder angehängt. Nun möchte ich, dass die Suche, die Autoren auf dem benutzerdefinierten Postlistenbildschirm (im Admin-Backend) durchführen können, auch auf den Metafeldern durchgeführt wird und nicht nur wie gewohnt in Titel und Inhalt nachgeschaut wird.
Wo kann ich mich einhängen und welchen Code muss ich verwenden?
Beispielbild
Stefano
custom-post-types
custom-field
search
Stefano
quelle
quelle
Antworten:
Ich habe das Filtern der Abfrage gelöst, indem ich den Join der Postmeta-Tabelle hinzugefügt und die where-Klausel geändert habe. Tipps zum Filtern der WHERE-Klausel (häufig das Suchen und Ersetzen mit regulären Ausdrücken erforderlich) finden Sie hier im Codex :
quelle
Stefano Antwort ist toll, aber es fehlt eine eindeutige Klausel:
Füge den obigen Code hinzu, aktualisiere ihn und er funktioniert ohne Duplikate.
quelle
Das wird funktionieren,
quelle
if ( $query->query['post_type'] != 'your_custom_post_type' ){ return; }
top oben in der Funktion wird verhindert, dass diese bei anderen Suchvorgängen ausgeführt wird. Beachten Sie, dass die Technik in dieser Antwort nicht mehr den post_title durchsucht und das Hinzufügen dieses Back-Ins nicht trivial ist.get_search_query()
die weitere Anrufeget_query_var( 's' )
. Da "s" als leere Zeichenfolge festgelegt ist, wird in den Suchergebnissen für "" zwischen den Anführungszeichen immer ein leerer Wert angezeigt. Gibt es eine Verbesserung an dieser Lösung, die dies umgeht?Antwort 1: Fügen Sie diesen Code in die Funktionsdatei ein und ändern und fügen Sie weitere Spaltennamen hinzu, die Sie in Ihrem benutzerdefinierten Beitragstyp verwendet haben
Antwort 2: Empfohlen Verwenden Sie diesen Code in der Funktionsdatei ohne Änderungen
quelle
Es handelt sich nicht um eine Suche, sondern um eine Auswahl anhand eines bestimmten Werts.
In der Datei functions-iworks-posts-filter.zip haben Sie ein Beispiel, wie Sie Filter für reguläre Posts durch einen meta_key hinzufügen können. Ich denke, es ist leicht zu konvertieren.
quelle
Die Version des Codes hier in ein paar Antworten, die den Parameter meta_query der WP_Query der Suche in pre_get_posts ändert, hat den post_title nicht mehr durchsucht. Die Möglichkeit, entweder den Post-Titel oder die OR-Meta-Werte zu durchsuchen, kann leider nicht direkt in WP_Query durchgeführt werden, ohne SQL zu ändern.
Ich habe einige der hier beschriebenen Techniken kombiniert, um eine funktionierende Version zu erhalten, die preg_replaces und zu viele SQL-Änderungen vermeidet (ich wünschte, sie könnten vollständig vermieden werden). Der einzige Nachteil ist, dass nach einer Suche im Untertiteltext oben auf der Seite "Suchergebnisse für ''" steht. Ich habe das gerade mit CSS für den benutzerdefinierten Beitragstyp meines Plugins ausgeblendet.
quelle