Нужно модифицировать запрос. Если это основной Loop - через хук
pre_get_posts, если это кастомный Loop, то прямо в нем, естественно:
/**
* Custom loop с сортировкой по мета
*/
$upcoming_args = array (
'post_type' => 'event', // тип поста, если стандартный, то 'post'
'posts_per_page' => '20', // сколько записей на страницу
'order' => 'ASC',
'orderby' => 'meta_value', // сортировка по значению мета-поля
'meta_key' => 'date_from', // ключ (название) мета-поля
'meta_query' => array (
array (
'key' => 'date_from', // ключ (название) мета-поля
'value' => date('Ymd'), // текущая дата, в формате хранимого значения, от нее будем проверять
'compare' => '>=', // сравнение "больше или равно"
),
),
);
$upcoming = new WP_Query( $upcoming_args );
if ( $upcoming->have_posts() ) :
while ( $upcoming->have_posts() ) : $upcoming->the_post();
// Здесь выводим посты
endwhile;
endif;
wp_reset_postdata();
?>