Intereting Posts
Зашифрован ли пароль перед его отправкой? Если да, то как я шифрую его так же? Отключить создание папок в течение нескольких лет и месяцев в папке uploads Jquery прокрутка анимированное смещение асинхронное Определение экземпляра виджета и местоположения боковой панели? Как перенаправить пользователей на роль и содержание redirect_to? Как изменить .htaccess для принудительного использования ssl на страницах входа и администрирования Сохранение данных метаданных? Поместите стробированный пункт меню Как отображать миниатюру первого сообщения в качестве фонового изображения виджета? как авторы могут определять пользовательские страницы? Скрытие метатекса виджета на экране «Внешний вид»> «Виджет» Форма комментария не отображается правильно? Выделите проблемы с комментариями автора Тестирование нагрузки для функциональности WordPress Есть ли виджет WordPress для моей веб-страницы?

Пользовательский запрос SELECT с несколькими значениями метаданных (проблема с упорядочением)

У меня есть два настраиваемых мета значения, которые я использую для списка событий, и почти полностью работаю, кроме заказа. У меня две даты (event_date и event_enddate). Одна из них – дата начала, которая всегда присутствует, а другая – дата окончания, которая используется только тогда, когда это необходимо. Я создал запрос, в котором перечислены все даты, в которых любое из этих полей равно или больше сегодняшней даты, что отлично работает. Тем не менее, я хочу, чтобы все события были заказаны исключительно поле event_date. Как я могу это сделать? Я потратил весь день, пытаясь сделать это, и просто не могу это решить!

Вот мой код:

SELECT DISTINCT wposts.* FROM $wpdb->posts wposts LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE ((wpostmeta.meta_key = 'event_enddate' AND wpostmeta.meta_value >= CURDATE()) OR (wpostmeta.meta_key = 'event_date' AND wpostmeta.meta_value >= CURDATE())) AND wposts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id IN(15) AND wposts.post_status = 'publish' ORDER BY wpostmeta.meta_value ASC 

Solutions Collecting From Web of "Пользовательский запрос SELECT с несколькими значениями метаданных (проблема с упорядочением)"

Я считаю, что вы можете добиться этого с помощью WP_Query и избежать пользовательского SQL:

 $today = date( 'Ymd' ); $args = array( 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'ID', 'terms' => 15 ) ), 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'event_enddate', 'value' => $today, 'compare' => '>=' ) ), 'meta_key' => 'event_date', 'meta_value' => $today, 'meta_compare' => '>=', 'orderby' => 'meta_value_num' ); $events = new WP_Query( $args );