Mysql запрос и метаданные заказа

Я сделал mysql-запрос в WordPress следующим образом:

$querystr = " SELECT $wpdb->posts.* FROM $wpdb->posts, $wpdb->postmeta WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = 'where' AND $wpdb->postmeta.meta_value = 'london' LIMIT 0,50 "; $pageposts = $wpdb->get_results($querystr, OBJECT); 

Таким образом я могу захватить все сообщения с meta_key = "where" и meta_value = london

Проблема в том, что у меня также есть еще одна meta_key , "date" и meta_value которая содержит настоящую дату типа "05-06-2013" , "06-06-2013" и т. Д.

Как я могу запросить все сообщения с мета "where" = "london" и упорядочить по дате, используя данные, содержащиеся в метаданных "date" = "xx-xx-xxxx" ?

Хотя класс WPDB или его глобальный экземпляр $wpdb – ваш друг, когда дело доходит до запросов к пользовательским таблицам или основным данным WP, которые не имеют API более высокого уровня, чрезмерное использование его для запросов сообщений.

Вместо этого прочитайте WP_Query .

В вашем случае вы будете использовать его так:

 $args = array( 'posts_per_page' => 50, /* set limit to 50 */ 'post_type' => array( 'post', 'page' ), /* fetch both posts and pages */ 'meta_key' => 'date', /* garb only posts with meta_key "date" set */ 'orderby' => 'meta_value_num', /* sort by numeric value of above key */ 'order' => 'ASC', /* sot order */ 'meta_query' => array( /* grab only posts/pages w/ "london" as value for "where" */ array( 'key' => 'where', 'value' => 'london', 'compare' => '=' ) ) ); $pageposts = new WP_Query( $args ); while ( $pageposts->have_posts() ) : $pageposts->the_post(); /* output something */ endwhile; wp_reset_postdata(); 

Вышеуказанная сортировка по дате будет безупречно работать либо с временной строкой, либо с строковым форматом YYYY-MM-DD .

С тем, как у вас в настоящее время есть, вам понадобится дополнительная итерация …