Intereting Posts
Проблема wp_get_attachment_image_src Показать таблицу из данных, представленных формой от пользователя Отладка, почему избранные изображения перестали отображаться в WooCommerce на главной странице get_term и get_term_by возвращают значение null или false, хотя термин существует Как добавить пост-пост-типа в другой пользовательский пост-пост после редактирования экрана с помощью AJAX? Создать таблицу из массива с подготовкой Таксономические термины, связанные с другим термином таксономии В любом случае, чтобы преобразовать плагин, чтобы стать коротким кодом? Тема двадцать восьмого экрана clearget area clearfix Как я могу контролировать, какие плагины запускаются в панели управления? Пользовательские правила перезаписи В: Как вытащить данные из пользовательской таблицы, чтобы заполнить параметры настройки / управления настройками zustomizer новые разрешения темы не позволяют мне редактировать Недопустимый тип смещения в get_post_type_object ()? Активный класс для моего flexslider в WordPress

Создание поиска по радиусу после метаданных после метаданных и добавление таксономии к запросу

Это старый SQL-запрос, найденный здесь с начала 2011 года, но его шкаф для того, чтобы делать то, что мне нужно, я мог бы найти и поработать. Хотя он делает именно то, что мне нужно, отображает свойства в пределах заданного радиуса отображаемого в настоящее время свойства, мне нужно добавить таксономию для типа контракта, чтобы он отображал только свойства, заданный радиус, тип контракта.

Я пробовал все виды, но не могу понять, как присоединиться к таблице для терминов / терминов для этого.

Любая помощь будет оценена по достоинству.

Это код, который у меня есть на данный момент (Messy, которого я знаю).

SELECT DISTINCT `t`.`ID`, 6371 * 2 * ASIN( SQRT( POWER( SIN( ( '13.727561' - `t`.`latitude` ) * pi() / 180 / 2), 2 ) + COS( '13.727561' * pi() / 180) * COS( `t`.`latitude` * pi() / 180 ) * POWER( SIN( ( '100.581708' - `t`.`longitude` ) * pi() / 180 / 2 ), 2 ) ) ) AS `distance` FROM ( SELECT `wp_posts`.`ID`, MAX(CASE WHEN ``.`meta_key` = '_property_longitude' THEN `wp_postmeta`.`meta_value` END ) AS `longitude`, MAX(CASE WHEN `wp_postmeta`.`meta_key` = '_property_latitude' THEN `wp_postmeta`.`meta_value` END ) AS `latitude` FROM `wp_term_taxonomy`, `wp_posts` LEFT JOIN `wp_postmeta` ON ( `wp_posts`.`ID` = `wp_postmeta`.`post_id` ) WHERE `wp_posts`.`post_status` = 'publish' AND `wp_term_taxonomy`.`term_id` = '36' AND `wp_posts`.`post_type` = 'dt_properties' AND `wp_postmeta`.`post_id` != '2553' GROUP BY `wp_posts`.`ID` HAVING `longitude` BETWEEN '100.485824158' AND '100.677591842' AND `latitude` BETWEEN '13.6344160725' AND '13.8207059275') AS `t` HAVING distance < 6.427 ORDER BY distance ASC; 

Solutions Collecting From Web of "Создание поиска по радиусу после метаданных после метаданных и добавление таксономии к запросу"

Ну, они говорят, что упорство – это ключ … Найдя ссылку в связанных вопросах .. https://stackoverflow.com/questions/17588525/how-to-join-post-meta-and-taxonomy-table-wpdb -mysql , я получил ответ. Хорошо, что он не использует исходные параметры, как было предложено, и не дает чрезмерного времени загрузки, как думал (он отображает только 5 свойств max в виджете боковой панели).

Не каждый, кто задает здесь вопрос, ищет кого-то, кто сделает для них работу, больше ищет руководство, конструктивное руководство и помощь.

Его НЕ красиво и можно сделать лучше кода, но для любого другого, кто ищет .. это может помочь.

  $dist='3.427'; /* Kilometers*/ $orig_lat = get_post_meta ( $post_id, "_property_latitude",true); $orig_lon = get_post_meta ( $post_id, "_property_longitude",true); $lon1 = (float) $orig_lon - (int) $dist / abs( cos( deg2rad( (float) $orig_lon ) ) * 69 ); $lon2 = (float) $orig_lon + (int) $dist / abs( cos( deg2rad( (float) $orig_lon ) ) * 69 ); $lat1 = (float) $orig_lat - ( (int) $dist / 69 ); $lat2 = (float) $orig_lat + ( (int) $dist / 69 ); /* the 6371 is Radius of the Earth in kilometers - for miles multiply by 0.621371192 */ $mapsearchquery = "SELECT DISTINCT `t`.`ID`, 6371 * 2 * ASIN( SQRT( POWER( SIN( ( '".$orig_lat."' - `t`.`latitude` ) * pi() / 180 / 2), 2 ) + COS( '".$orig_lat."' * pi() / 180) * COS( `t`.`latitude` * pi() / 180 ) * POWER( SIN( ( '".$orig_lon."' - `t`.`longitude` ) * pi() / 180 / 2 ), 2 ) ) ) AS `distance` FROM ( SELECT `$wpdb->posts`.`ID`, MAX(CASE WHEN `$wpdb->postmeta`.`meta_key` = '_property_longitude' THEN `$wpdb->postmeta`.`meta_value` END ) AS `longitude`, MAX(CASE WHEN `$wpdb->postmeta`.`meta_key` = '_property_latitude' THEN `$wpdb->postmeta`.`meta_value` END ) AS `latitude` FROM `$wpdb->posts` LEFT JOIN `$wpdb->postmeta` ON ( `$wpdb->posts`.`ID` = `$wpdb->postmeta`.`post_id` ) INNER JOIN `$wpdb->term_relationships` ON (`$wpdb->posts`.`ID` = `$wpdb->term_relationships`.`object_id`) INNER JOIN `$wpdb->term_taxonomy` ON (`$wpdb->term_relationships`.`term_taxonomy_id` = `$wpdb->term_taxonomy`.`term_taxonomy_id`) INNER JOIN `$wpdb->terms` ON (`$wpdb->terms`.`term_id` = `$wpdb->term_taxonomy`.`term_id`) WHERE `$wpdb->posts`.`post_status` = 'publish' AND `$wpdb->term_taxonomy`.`taxonomy` = 'contract_type' AND `$wpdb->terms`.`term_id` = ('".$_contract_type."') AND `$wpdb->posts`.`post_type` = 'dt_properties' AND `$wpdb->postmeta`.`post_id` != '".$post_id."' GROUP BY `$wpdb->posts`.`ID` HAVING `longitude` BETWEEN '".$lon1."' AND '".$lon2."' AND `latitude` BETWEEN '".$lat1."' AND '".$lat2."') AS `t` HAVING distance < '".$dist."' ORDER BY distance ASC;"; // Just get the ID's //$pageposts = $wpdb->get_col($mapsearchquery); $pageposts = $wpdb->get_results($mapsearchquery, OBJECT);