You’ll have a difficult time doing that with wp_list_pages()
. You will need to create a custom query loop, using either WP_Query()
or get_posts()
.
Custom loop with 4 most recent posts
<?php
$recent_posts_query_args = array(
'posts_per_page' => 4
);
$recent_posts = new WP_Query( $recent_posts_query_args );
// Open custom loop
if ( $recent_posts->have_posts() ) :
while ( $recent_posts->have_posts() ) :
$recent_posts->the_post();
// Normal post template tags can be used here, just like constructing a normal loop
// Close custom loop
endwhile;
endif;
// Be kind; reset postdata
wp_reset_postdata();
?>
The actual markup you use is up to you. The custom loop markup/output is like any other loop at this point.