Запросить запрос по сообщению meta value

//Displaying latest post per author on front page function filter_where($where = '') { global $wpdb; $where .= " AND vipwp_posts.id = (select id from {$wpdb->prefix}posts p2 where p2.post_status = 'publish' and p2.post_author = {$wpdb->prefix}posts.post_author order by p2.post_date desc limit 0,1)"; return $where; } add_filter('posts_where', 'filter_where'); 

Я хотел бы изменить приведенный выше код: возможно ли изменить порядок записи с даты на meta_value?

Пример: ИЗМЕНЕНИЕ

 order by p2.post_date 

К

 meta_key='name_key' ORDER BY meta_value 

Спасибо, но если я удалю post_where, не выводя последнее сообщение на автора

Solutions Collecting From Web of "Запросить запрос по сообщению meta value"

Взгляните на WordPress Codex: http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_orderby

 function edit_posts_orderby($orderby_statement) { $orderby_statement = "meta_value DESC"; return $orderby_statement; } add_filter('posts_orderby', 'edit_posts_orderby'); 

Если вы создаете WP_Query самостоятельно, вы можете изменить параметр meta_value на meta_value

Взгляните сюда: http://codex.wordpress.org/Class_Reference/WP_Query

Я думаю, вы можете сделать это полностью из действия pre_get_posts . Поэтому попробуйте удалить фильтр posts_where и заменить его:

 function wpa_69199( $query ) { set_query_var( 'orderby', 'meta_value' ); set_query_var( 'meta_key', 'name_key' ); //field you'd like to order by } add_action( 'pre_get_posts', 'wpa_69199' ); 

Примечание: здесь нет условной логики, и все сообщения везде будут отсортированы таким образом.