Не сильно знаток WP, но в документации все есть - wp get recent posts, нет?
<h2>Recent Posts</h2>
<ul>
<?php
$args = array( 'numberposts' => '1' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a> </li> ';
}
wp_reset_query();
?>
</ul>
https://codex.wordpress.org/Function_Reference/wp_...
ps почему из общего цикла не взять первый пост, который отправится в шапку, а остальные в сетку? Зачем отдельный запрос делать?