You can try this function instead of your multi_gallery_shortcode()
:
function multi_gallery_shortcode($atts, $content=null) {
extract( shortcode_atts( array(
'pid' => 0,
), $atts ) );
//format the input
$pid = intval($pid);
// construct a post object dependent on the input value
if($pid>0){
// query a post object
$pobj = get_post( $pid );
}else{
global $post;
// current post object
$pobj = &$post;
}
// construct gallery title
$gallery_title = $pobj->post_title; // customize to your needs
// construct gallery url
$gallery_url = ""; // default first image gallery url
$attributes = wp_get_attachment_image_src( get_first_gallery_image($pobj->ID),'thumbnail'); // customize to your needs
if(isset($attributes[0]))
$gallery_url = $attributes[0];
// format output:
$before = sprintf('<div class="gallery-before"><a href="https://wordpress.stackexchange.com/questions/95109/%s">%s</a></div>', $gallery_url , $gallery_title );
$gallery_sc = sprintf('',get_random_gallery_images($pobj->ID));
$after = sprintf('<span class="galNum">%d</span> Photos.', get_total_attachments($pobj->ID));
return $before.do_shortcode($gallery_sc).$after;
}
where you use it like this in your posts/pages:
[multigallery pid="1234"]
where pid
is the post id.