Suche speichert (benutzerdefiniertes PLZ-Feld) innerhalb von 5, 10, 15 Meilen von Benutzer eingegebenen Postleitzahl .. Code-Änderung

Ich habe nach einer Standortsuchlösung für WordPress gesucht. Die beste Semi-Lösung, die ich gefunden habe, ist http://mondaybynoon.com/2010/02/22/store-locator-wordpress-pods

Das Problem ist, dass ich keine Pods verwenden möchte und stattdessen in den benutzerdefinierten Feldern eines Posts suchen möchte.

Ich habe eine separate Tabelle eingerichtet mit allen UK Postleitzahlen + lat, Log-Daten ..

Hier ist die function.

function mbn_get_stores_by_location( $postcode, $radius ) { global $wpdb; $radius = intval( $radius ); // we first need to get the source coordinates $sql = "SELECT `latitude`, `longitude` FROM `uk_postcodes` WHERE `postcode` = '$postcode'"; $coords = $wpdb->get_row( $sql ); // now we'll get the other Postcodes within the radius, ordered by distance $sql = "SELECT uk_postcodes.postcode, ( 3959 * acos( cos( radians( $coords->latitude ) ) * cos( radians( uk_postcodes.latitude ) ) * cos( radians( uk_postcodes.longitude ) - radians( $coords->longitude ) ) + sin( radians( $coords->latitude ) ) * sin( radians( uk_postcodes.latitude ) ) ) ) AS distance FROM uk_postcodes HAVING distance get_results( $sql ); // we need to store the zips in order to build the Pods query $target_postcodes = array(); foreach ($nearby_postcodes as $nearby_postcode) { array_push($target_postcodes, $nearby_postcode->postcode); } // we're going to store the results as we go $store_results = array(); if( count( $target_postcodes > 0 ) ) { $final_target_postcodes = implode(',', $target_postcodes); if( strlen( $final_target_postcodes > 0 ) ) { // let's snag the data $stores = new Pod('stores'); $stores->findRecords('id ASC', 9, 't.postcode IN (' . $final_target_postcodes . ')'); $store_data = array(); while ( $stores->fetchRecord() ) { $store_data['id'] = $stores->get_field('id'); $store_data['name'] = $stores->get_field('name'); $store_data['slug'] = $stores->get_field('slug'); $store_data['address'] = $stores->get_field('address'); $store_data['city'] = $stores->get_field('city'); $store_data['state'] = $stores->get_field('state'); $store_data['postcode'] = $stores->get_field('postcode'); foreach ($nearby_postcodes as $nearby_postcode) { if( $store_data['postcode'] == $nearby_postcode->postcode ) { $store_data['distance'] = intval( $nearby_postcode->distance ); } } array_push( $store_results, $store_data ); unset( $store_data ); } usort( $store_results, "mbn_cmp" ); } } return $store_results; } 

Ich gehe davon aus, dass ich mich ändern muss

 $stores = new Pod('stores'); $stores->findRecords('id ASC', 9, 't.postcode IN (' . $final_target_postcodes . ')'); 

um Query_posts zu widerspiegeln. Ich habe viele Variationen von versucht

 $stores = query_posts('meta_key=post_code&meta_value=' . $final_target_postcodes . ''); 

ohne Erfolg ..

Könnte jemand bitte einen pointers in die richtige Richtung geben?

Solutions Collecting From Web of "Suche speichert (benutzerdefiniertes PLZ-Feld) innerhalb von 5, 10, 15 Meilen von Benutzer eingegebenen Postleitzahl .. Code-Änderung"

Auf dieser Website gab es eine Reihe von Fragen und Antworten bezüglich der Rückgabe von Ergebnissen basierend auf Geo Location.

Bitte sehen Sie sich die folgenden Beiträge an:

Ist es möglich, die Geolocation-Suche um WP_Query zu wickeln?

Optimieren einer Proximity-basierten Filialsuche auf einem freigegebenen Web-Host?

Wie kann ich eine standortbasierte (Postleitzahlen-) Suche in WordPress implementieren?

Ich habe geocodiert Beiträge mit Breitengrad Länge – Wie nach Radius suchen?

Sehen Sie sich auch mein Plugin Geo Data Store an, das ich aufgrund der Notwendigkeit erstellt habe, Geo-Daten besser zu speichern als WordPress. Sie speichern Ihre Koordinaten in einem benutzerdefinierten Feld Ihrer Wahl, sagen dem Plugin, welches Feld das ist, indem Sie einen Filter verwenden, und dann wird dieses benutzerdefinierte Feld in eine Tabelle kopiert, die für die Radius-Suche optimiert ist.

Das Plugin bietet Ihnen dann eine Reihe von functionen, mit denen Sie Post-IDs zurückgeben können, die sich in einem bestimmten Radius eines Punktes befinden. Sie können dann die Post-IDs in einer WP_Query oder pre_get_posts verwenden.