WordPress-Suche verstehen

Ich versuche, eine benutzerdefinierte Suche zu erstellen, ähnlich der auf totaljobs.com, aber über eine WordPress-Website. Im Wesentlichen könnte ich gleichzeitig nach Suchbegriffen und Ort suchen.

So wie es jetzt funktioniert, gibt es ein Suchfeld und dann gibt es auch eine Ortssuche. Sie sind zwei getrennte Felder. Für das Suchfeld verwende ich die Standard-WordPress-Suche und für die Standortsuche nehme ich die Breiten- und Längengrade sowie eine Radiuseinstellung und führe sie durch das Google Maps API. Wie Sie sehen, ist der Suchvorgang bei beiden Suchvorgängen sehr unterschiedlich.

Ich habe den Posts benutzerdefinierte Felder für den Längen- und Breitengrad hinzugefügt und frage sie in der database nach meiner Suche ab. Was ich nicht weiß ist, wie die Standard-WordPress-Suche funktioniert. Sucht es im Feld post_content und post_title usw.? Ich kann nicht scheinen, den serverseitigen Code zu finden, um es zu untersuchen, weil die search.php eher ein allgemeiner Schleifencode ist.

Ich habe festgestellt, dass $ s die globale Variable für den Suchbegriff ist, aber ich kann nicht herausfinden, wo diese Variable verarbeitet wird und bin interessiert, wie die database diese Variable verwendet, weil ich denke, dass ich um die aktuelle WordPress-Suche herumkommen muss Info.

Ich schätze die Hilfe. Vielen Dank!

Solutions Collecting From Web of "WordPress-Suche verstehen"

Die Standardsuche wird von WP_Query meist über eine Methode namens parse_search() , die vom Parameter s ausgetriggers wird. Sie können die Quelle von WP_Query nach is_search und einige andere Teile zusammenfügen.

Oder Sie können einfach eine Abfrage erstellen …

 $s = new WP_Query(array('s' => 'test')); 

… dump den SQL …

 var_dump($s->request); 

… und lies es.

 SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND (((wp_posts.post_title LIKE '%test%') OR (wp_posts.post_content LIKE '%test%'))) AND (wp_posts.post_password = '') AND wp_posts.post_type IN ('post', 'page', 'attachment', 'book') AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.post_date DESC LIMIT 0,2 

Sie sollten sehen, dass Sie standardmäßig eine LIKE Abfrage für Titel und Inhalt erhalten. “Satz” -Suchen werden wie folgt getrennt:

 AND (((wp_posts.post_title LIKE '%Hello%') OR (wp_posts.post_content LIKE '%Hello%')) AND ((wp_posts.post_title LIKE '%I%') OR (wp_posts.post_content LIKE '%I%')) AND ((wp_posts.post_title LIKE '%am%') OR (wp_posts.post_content LIKE '%am%')) AND ((wp_posts.post_title LIKE '%a%') OR (wp_posts.post_content LIKE '%a%')) AND ((wp_posts.post_title LIKE '%test%') OR (wp_posts.post_content LIKE '%test%')))