gnikyt Code ramblings.

Get original sized images from a Wordpress Post Gallery

Recently, I was working on a project where I needed to modify an existing page that had multiple galleries. This change required me to have access to the original uploaded images. Here’s a simple function I wrote which returns the images easily in an array format.

# Input
Hey comes see my gallery! [gallery ids="12,124,342]

# Code
$images = getGalleryImages(get_the_content());

# Output
Array (
  [0] => http://xxxx/wp-content/uploads/2014/09/Olin_24_large.jpg
  [1] => http://xxxx/wp-content/uploads/2014/11/Jw_large.jpg
  [2] => http://xxxx/wp-content/uploads/2014/11/cresand-D_large.jpg
);
/*
 * getGalleryImages
 *
 * Converts a WP gallery into an array of images to use.
 *
 * @param $content rendered content (ex: get_the_content())
 * @param $return_size size of image to return
 * @return array
 */
function getGalleryImages($content, $return_size = 'large') {
  // Gallery is in format of [gallery link="..." ids="12,124,342"]
  preg_match('/ids="([^"]*)"/i', $content, $matches);

  $images = [];
  if (isset($matches[1])) {
    foreach(explode(',', $matches[1]) as $id) {
      // For each image in the gallery, get its WP data (url, width, height)
      $images[] = wp_get_attachment_image_src($id, $return_size);
    }
  }
  
  return $images;
}