Intereting Posts
Как проверить, является ли страница «единственной» Доступ к значениям customizer в javascript Разбирайте данные блога wordpress с помощью json api и ajax Объект WP_Meta_Query с условными выражениями Как увеличить лимит символов для почтового имени 200? Медиа-библиотека и сообщения перечисляют проблемы с WordPress на IIS Как восстановить удаленные сообщения не в корзине Используйте разные файлы javascript для каждой страницы на веб-сайте Как вы создаете блог WordPress с несколькими авторами, чтобы позволить что-то вроде «вики-страницы» в StackExchange? Я хочу пройти через Woocommerce Product Catogories и показать их в выпадающем меню framework: добавить пользовательский css в вывод css Не удается получить доступ к wp-admin Когда новый пользовательский регистр добавляет новую роль пользователя Изменение настраиваемого поля с лицевой стороны Визуальный редактор становится пустым после обновления статьи

У меня есть геокодированные сообщения с широтой долготы – Как искать по радиусу?

У меня есть сообщения, которые геокодированы с широтой и долготой от Google. Я в основном могу ввести адрес в почтовое пользовательское поле, а широта и долгота будут помещены в два отдельных метаполя.

Я хотел бы создать пользовательский поиск, позволяющий посетителям искать их почтовый индекс и найти ближайшие местоположения.

Я нашел этот плагин, который делает все, что в комплекте с пользовательскими типами сообщений, а затем поисковой страницей http://wordpress.org/extend/plugins/wp-find-your-nearest/

Я думал попробовать и изменить его для работы с моими обычными мета-полями и использовать только страницу / функцию поиска. Кто-нибудь знает какие-либо другие плагины или методы для создания пользовательского поиска с использованием почтовых кодов и радиусов из лат / длинных мета-полей

благодаря

Solutions Collecting From Web of "У меня есть геокодированные сообщения с широтой долготы – Как искать по радиусу?"

В нашем магазине Geo Data Store есть @Brady . Это идеальная работа в одной из моих установок.

Он использует настраиваемую таблицу, в которой хранятся только идентификаторы, мета-идентификаторы, данные lat и lng, поэтому ваши запросы остаются быстрыми и краткими, даже когда ваша база данных начинает масштабироваться. У меня 5-звездочный рейтинг с моей стороны.

Этот плагин предназначен для использования другими разработчиками и используется вместе с темами и другими плагинами. Многие темы и плагины используют таблицу метаданных WordPress для хранения координат долготы и широты для сообщений. Хотя это прекрасно работает, таблица метаданных не может быть проиндексирована очень хорошо. Возьмем, например, вы создали пользовательский тип сообщения, называемый «свойствами». Вы создаете 100 000 сообщений, все с координатами широты и долготы. Например, вы хотите, чтобы ваши пользователи искали эти свойства в радиусе 50 миль. Из-за метода, в котором WordPress хранит метаданные, запрос медленный, особенно при работе с большими объемами данных.

@Brady в описании плагина.

Примечание. Существует ошибка, связанная с внутренними компонентами WP – эти строки не удаляются при удалении сообщения. Не беспокойтесь об этом. Я попытался проделать это с Dev, и мы не отстали от него. Во всяком случае: это ничего не вредит, но вы должны очищать свои таблицы, прежде чем идти в прямом эфире (или тестировать в локальной установке), чтобы свести к минимуму количество несвязанных строк.

Пример кода из Scotts pastebin в комментариях

// Only do a map search if user submitted one if( 2 == $_SESSION['s_doing_property_search'] ) { // Only generate map search results if we don't have any yet or if they are a day out of date if( empty( $_SESSION['homes_for_' . $type . '_map_search_results'] ) || $_SESSION['homes_for_' . $type . '_map_search_timestamp'] < strtotime( "-1 Day" ) ) { // Load instance of GeoDataStore if ( ! isset( $sc_gds ) ) $sc_gds = new sc_GeoDataStore(); // Just get the ID's of posts in range $_SESSION['homes_for_' . $type . '_map_search_results'] = (array) $sc_gds->getPostIDsOfInRange( "homes-for-" . $type, $_SESSION['s_property_radius'], $_SESSION['s_property_address_lat'], $_SESSION['s_property_address_lng'] ); // Set a timestamp so we don't do this expensive get each page load. $_SESSION['homes_for_' . $type . '_map_search_timestamp'] = time(); } // We we have no results then set an array just one that will trigger no posts found. if( empty( $_SESSION['homes_for_' . $type . '_map_search_results'] ) ) $query->set( 'post__in', array(1) ); else $query->set( 'post__in', $_SESSION['homes_for_' . $type . '_map_search_results'] ); }