Benutzerdefinierte Suche stimmt nicht mit den Ergebnissen überein

Ich habe eine benutzerdefinierte Suche eingerichtet, um die s GET-Variable für eine URL zu verwenden. Ich möchte, dass es bestimmte Ergebnisse liefert, aber ich bin auf ein seltsames Problem gestoßen. Erstens, hier ist mein Code:

 $search_term = $_GET['s']; if($search_term!=''){ $s = new WP_Query(array('s' => $search_term)); $search_array = array(); if($s->have_posts()){ while($s->have_posts()){ $s->the_post(); $title = get_the_title(); $permalink = get_permalink(); $search_identifier = $title.$permalink; array_push($search_array,$search_identifier); } } } 

Im Wesentlichen erstelle ich für jeden Beitrag ein Array von eindeutigen Werten, weil ich sie unmittelbar danach für eine function verwenden muss.

Ich habe einen Beitrag mit dem Titel “Kitchen Assistant”. Wenn ich “Küche” suche, erscheint es. Wenn ich “Assistent” suche, wird es nicht angezeigt.

Ich habe andere Beiträge mit dem Wort “Assistent” in Titel und Inhalt und diese erscheinen, wenn ich “Assistent” suche. Ich bin neugierig, warum es mit einem Suchbegriff angezeigt wird und nicht der andere?

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

BEARBEITEN

Hier ist mein Code in einem größeren Kontext zur Erläuterung. Ich habe eine eigenständige Template-PHP-Seite als eine neue Suchseite erstellt, aufgrund der Anpassungen, die ich durchführen möchte. Es ist ein Suchformular, das nach zwei verschiedenen Begriffen sucht. Der eine ist ein Suchbegriff und der andere ist ein Ortsbegriff. Ich mache zuerst eine WordPress-Abfrage für den Suchbegriff und füge sie alle zu einem Array hinzu (wenn ein Suchbegriff existiert). Ich suche dann nach dem Ort (wenn der Ort existiert). Ich referenziere sie dann, wenn beide existieren, sonst mache ich nur eine Suche abhängig von der Variablen, die existiert. Es scheint alles zu funktionieren, außer dem Suchteil in WordPress. Es hat keinerlei Auswirkungen auf die Standortsuche, und die Standortsuche scheint nicht wirklich relevant zu sein, warum die WordPress-Abfrage die richtigen Variablen nicht erfasst, aber jeder fragt nach dem Kontext, sodass ich dachte, ich würde teilen. Lassen Sie mich wissen, ob dies mehr Licht in die Situation bringt oder ob Sie andere Aspekte klären möchten. Vielen Dank!

  $search_term)); $search_array = array(); if($s->have_posts()){ while($s->have_posts()){ $s->the_post(); //var_dump($s); //I ADD POST LONGITUDE AND LATITUDE FIELDS BECAUSE THESE POSTS ARE ENTERED DAILY ON A CRON JOB WITH THOSE VALUES; THESE WILL BE NEEDED LATER DURING A GEOLOCATION TEST BELOW $post_latitude = get_post_field('post_latitude'); $post_longitude = get_post_field('post_longitude'); //CURRENTLY SOME POSTS DON'T HAVE LONGITUDE AND LATITUDE SO I DON'T WANT TO HAVE THOSE INCLUDED IN THE SEARCH, THEY ARE IN A LIST ON THE SITE BUT DON'T HAVE LOCATIONS SO IT DEFEATS THE PURPOSE OF WHAT WE ARE DOING AND WILL BE EXCLUDED FROM SEARCH if($post_latitude && $post_longitude){ $id = get_the_ID(); $search_identifier = $id; //IF POST LATITUDE AND POST LONGITUDE EXIST ON TERM THAT MATCHES SEARCH TERM array_push($search_array,$search_identifier); } } } } //SEARCH RESULTS ARRAY IS NOW SET //IF LOCATION IS FILLED OUT, RUN GOOGLE API CODE (POSTCODE/TOWN IS THE DEFAULT VALUE/PLACEHOLDER ON THE FORM SO IN THE CHANCE THAT SOMEONE SUBMITS WITH THAT STILL IN THE INPUT, I DON'T WANT IT TO RUN THROUGH THE GOOGLE API if($location!="Postcode%2FTown" && $location!="" && $location!="Postcode/Town"){ //TAKE THE LOCATION SEARCH TERM AND CONVERT IT INTO LATITUDE AND LONGITUDE COORDINATES $url='http://maps.googleapis.com/maps/api/geocode/json?address='.$location.'&sensor=false'; $source = file_get_contents($url); $obj = json_decode($source); $LATITUDE = $obj->results[0]->geometry->location->lat; $LONGITUDE = $obj->results[0]->geometry->location->lng; $center_lat = $LATITUDE; $center_lng = $LONGITUDE; $radius = $_GET['radius']; $query = sprintf("SELECT ID, post_title, post_latitude, post_longitude, post_date, ( 3959 * acos( cos( radians('%s') ) * cos( radians( post_latitude ) ) * cos( radians( post_longitude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( post_latitude ) ) ) ) AS distance FROM wp_posts HAVING distance real_escape_string($center_lat), $mysqli->real_escape_string($center_lng), $mysqli->real_escape_string($center_lat), $mysqli->real_escape_string($radius)); $result = $mysqli->query($query); $found_num = mysqli_num_rows($result); //END GOOGLE MAPS API CALL } ?> 

Jobs found for "

//BEGIN JOB LIST
    fetch_assoc()){ $post_id = $row['ID']; $permalink = get_permalink($post_id); $title = $row['post_title']; //IF SEARCH TERM EXISTS, CREATE ARRAY THAT MATCHES LOCATION AS WELL if($search_array){ foreach($search_array as $value){ if($value==$post_id){ array_push($new_search_array,$post_id); } } } //ELSE IF SEARCH DOESN'T EXIST, JUST DO LOCATION SEARCH else{ echo $row['post_title']; } } } //IF SEARCH TERM DID EXIST AND LOCATION TERM DID EXIST, NEW SEARCH ARRAY INITIALIZED AND WE USE THAT TO DISPLAY RESULTS if($new_search_array){ foreach($new_search_array as $value){ get_the_title($value); } } else if($search_array){ foreach($search_array as $value){ get_the_title($value); } } ?>

Solutions Collecting From Web of "Benutzerdefinierte Suche stimmt nicht mit den Ergebnissen überein"

Ich habe die Antwort auf meine eigene Frage herausgefunden (endlich!). Ich verwende die NineToFive-Vorlage, und ich schätze, standardmäßig gibt es ein Limit für die Anzahl der zurückgegebenen Suchergebnisse (ich bin mir nicht sicher, ob das ein WordPress-Standard ist; vielleicht kann jemand das klären).

Ich habe meine Abfrage folgendermaßen geändert:

 $s = new WP_Query(array('s' => $search_term, 'posts_per_page' => -1)); 

Die Suchergebnisse nicht begrenzen und das hat sich geändert. Ich musste jeden möglichen Suchbegriff auf Seite 1 finden, um ihn mit dem Standort zu referenzieren, aber er paginierte die Suchergebnisse.

Danke für Ihre Hilfe!