You have some alernatives.
First alternative is create a taxonomy for pages using register_taxonomy.
Then, assuming this taxonomy is called ‘pages-group’ create a template file called taxonomy-pages-group.php
and use the loop to display your page as you want.
A second alternative is create a shorcode that you have to put into pages or post content.
Shortcode should look like:
[pages ids="12,23,34,45"]
You should register the shorcode with add_shortcode
(codex) function, something like
function add_pages_shortcode() {
add_shortcode( 'pages' , 'show_pages_shortcode' );
}
add_action('wp_loaded','add_pages_shortcode');
And the create your show_pages_shortcode
function that display the selected pages, something like:
function show_pages_shortcode( $atts = array() ) {
if ( isset($atts['ids']) && ! empty($atts['ids']) ) {
$pages = get_pages( array('include' => $atts['ids'] ));
if ( ! empty($pages) ) {
global $post;
ob_start();
foreach ( $pages as $post) {
setup_postdata($post);
?>
<li>
<a id="page-<?php the_ID(); ?>" href="https://wordpress.stackexchange.com/questions/112032/<?php the_permalink(); ?>">
<?php the_title(); ?>
<?php the_post_thumbnail() ?>
</a>
<?php the_excerpt() ?>
</li>
<?php
}
wp_reset_postdata();
return '<ul class="pages-list">' . ob_get_clean() . '</ul>';
}
}
}
Of course you can change the output as you want.