Try this:
$args = array(
'name'=>'header-images',
'posts_per_page' => 4,
'orderby' => 'rand'
);
i.e. use posts_per_page
instead of numberposts
if you want to use query_posts()
according to the the Codex page:
http://codex.wordpress.org/Function_Reference/query_posts
Edit:
Here is one idea - fetch the gallery shortcode ids from a page content with a given slug:
/*
* Get an array of the 'ids' parameter from the gallery shortcode that is placed in the content of a post/page with a given slug.
* @param string $slug Post slug.
* @param string $type Post type.
* @return array Array of the gallery shortcode ids parameter.
*/
function get_gallery_ids_wpse_87978($slug,$type){
$output=array();
$my_query = new WP_Query(array('name'=>$slug,'post_type'=>$type));
while ($my_query->have_posts()) : $my_query->the_post();
$content=get_the_content();
preg_match('/ids=\"([0-9,]+)\"/i', $content, $matches);
if(isset($matches[1])){
$output = explode(",",$matches[1]); // let's take the last set of ids
}
endwhile;
return $output;
}
Usage example:
We have for example a page with the slug my-gallery-demo
and in the content there is this shortcode like this one:
[gallery ids="1376,1375,341,213,211,210,209,208,206,205"]
To display 4
random images from this shortcode we do the following:
// initial values:
$slug='my-gallery-demo'; // EDIT post/page slug that contains the gallery shortcode
$type='page'; // EDIT post slug that contains the gallery shortcode
$size='thumb'; // EDIT image size (thumb,large,full,...)
$n=4; // EDIT number of random images to show
// fetch all ids from the gallery shortcode:
$ids=get_gallery_ids_wpse_87978($slug,$type);
// get n random keys from the $ids array:
$random_ids=array_rand($ids,$n);
// display a list of n random images:
echo '<ul>';
foreach($random_ids as $random_id){
echo '<li>';
echo wp_get_attachment_image( $ids[$random_id], $size );
echo '</li>';
}
echo '</ul>';