Intereting Posts

Как заказывать сообщения по метаоценке?

Все сообщения используют пользовательский поле «крайний срок» (формат: yyyy-mm-dd). Как я могу сделать сообщения о meta_key странице категории с помощью meta_key «deadline» и DESC ? Я использую это:

 if ( get_query_var( 'paged' ) ) { $paged = get_query_var('paged'); } elseif ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } query_posts( array( 'paged' => $paged , 'cat' => $category_id , 'meta_key' => 'deadline' , 'orderby' => 'meta_value' , 'order' => 'DESC' )); get_template_part( 'loop' ); 

но он не работает, чтобы заказывать сообщения с помощью meta_value .

Solutions Collecting From Web of "Как заказывать сообщения по метаоценке?"

Как уже упоминалось выше, никогда не используйте query_posts , так как это ломает много вещей. pre_get_posts этого используйте фильтр, например pre_get_posts . Фильтр pre_get_posts позволяет вам редактировать запрос до его pre_get_posts WP. Следующий код будет упорядочен по требуемому мета-значению. Я сделал это так, что он работает только с основным запросом страницы и с сообщением типа post , но вы можете отредактировать его далее.

 function wpse194643_special_sort( $query ) { //is this the main query and is this post type of post if ( $query->is_main_query() && $query->is_post_type( 'post' ) ) { //Do a meta query $query->set( 'meta_query', array( array( 'key' => 'deadline' ) ) ); //sort by a meta value $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'DESC' ); } } add_action( 'pre_get_posts', 'wpse194643_special_sort' );