Ich versuche, eine Wordpress-SQL-Abfrage, die Ergebnisse für den Standort des Benutzers relevant zurückgibt.Wordpress SQL-Abfrage ermitteln Geolocation und gibt relevante Ergebnisse zurück
Ein Geolocation-Längen- und Breitengrad-Cookie wird gesetzt, wenn der Benutzer die Site zum ersten Mal besucht. Die 2-Cookies werden dann wieder in PHP-Variablen auf einer späteren Seite lesen:
$lat = $_COOKIE["lat"]; $long = $_COOKIE["long"];
Der folgende SQL-Code wird dann ausgeführt:
$locations = "
SELECT P.ID, P.post_title, P.post_content,
MAX(IF(PM.meta_key = 'lat', PM.meta_value, NULL)) AS lat,
MAX(IF(PM.meta_key = 'long', PM.meta_value, NULL)) AS long,
MAX(IF(PM.meta_key = 'contact_email', PM.meta_value, NULL)) AS contact_email
FROM wp_posts AS P
LEFT JOIN wp_postmeta AS PM on PM.post_id = P.ID
WHERE P.post_type = 'pickup_location' and P.post_status = 'publish'
GROUP BY P.ID
ORDER BY P.post_title ASC;";
$result_locations = $wpdb->get_results($locations);
Alles funktioniert wie es sollte, so weit ... die Cookies werden gesetzt und gelesen. Die Abfrage gibt genau das zurück, was sie sein sollte. Ich möchte jedoch Folgendes zu meiner Abfrage hinzufügen, um die Ergebnisse der Abfrage weiter einzugrenzen.
AND WHERE acos(sin('.$lat.') * sin('lat') + cos('.$lat.') * cos('lat') * cos('long' - ('.$long.'))) * 6371 <= 200;