gallery_shortcode() – Builds the Gallery shortcode output.

You appear to be a bot. Output may be restricted

Description

Builds the Gallery shortcode output.

This implements the functionality of the Gallery Shortcode for displaying WordPress images on a post.

Usage

$string = gallery_shortcode( $attr );

Parameters

$attr
( array ) required – { Attributes of the gallery shortcode.
$order
( string ) required – Order of the images in the gallery. Default 'ASC'. Accepts 'ASC', 'DESC'.
$orderby
( string ) required – The field to use when ordering the images. Default 'menu_order ID'. Accepts any valid SQL ORDERBY statement.
$id
( int ) required – Post ID.
$itemtag
( string ) required – HTML tag to use for each image in the gallery. Default 'dl', or 'figure' when the theme registers HTML5 gallery support.
$icontag
( string ) required – HTML tag to use for each image's icon. Default 'dt', or 'div' when the theme registers HTML5 gallery support.
$captiontag
( string ) required – HTML tag to use for each image's caption. Default 'dd', or 'figcaption' when the theme registers HTML5 gallery support.
$columns
( int ) required – Number of columns of images to display. Default 3.
$size
( string|int[] ) required – Size of the images to display. Accepts any registered image size name, or an array of width and height values in pixels (in that order). Default 'thumbnail'.
$ids
( string ) required – A comma-separated list of IDs of attachments to display. Default empty.
$include
( string ) required – A comma-separated list of IDs of attachments to include. Default empty.
$exclude
( string ) required – A comma-separated list of IDs of attachments to exclude. Default empty.
$link
( string ) required – What to link each image to. Default empty (links to the attachment page). Accepts 'file', 'none'. }

Returns

string HTML content to display gallery.

Source

File name: wordpress/wp-includes/media.php
Lines:

1 to 100 of 238
function gallery_shortcode( $attr ) {
  $post = get_post();

  static $instance = 0;
  $instance++;

  if ( ! empty( $attr['ids'] ) ) {
    // 'ids' is explicitly ordered, unless you specify otherwise.
    if ( empty( $attr['orderby'] ) ) {
      $attr['orderby'] = 'post__in';
    }
    $attr['include'] = $attr['ids'];
  }

  
/**
 * Filters the default gallery shortcode output.
 *
 * If the filtered output isn't empty, it will be used instead of generating
 * the default gallery template.
 *
 * @since 2.5.0
 * @since 4.2.0 The `$instance` parameter was added.
 *
 * @see gallery_shortcode()
 *
 * @param string $output   The gallery output. Default empty.
 * @param array  $attr     Attributes of the gallery shortcode.
 * @param int    $instance Unique numeric ID of this gallery shortcode instance.
 */
  $output = apply_filters( 'post_gallery', '', $attr, $instance );

  if ( ! empty( $output ) ) {
    return $output;
  }

  $html5 = current_theme_supports( 'html5', 'gallery' );
  $atts  = shortcode_atts(
    array(
      'order'      => 'ASC',
      'orderby'    => 'menu_order ID',
      'id'         => $post ? $post->ID : 0,
      'itemtag'    => $html5 ? 'figure' : 'dl',
      'icontag'    => $html5 ? 'div' : 'dt',
      'captiontag' => $html5 ? 'figcaption' : 'dd',
      'columns'    => 3,
      'size'       => 'thumbnail',
      'include'    => '',
      'exclude'    => '',
      'link'       => '',
    ),
    $attr,
    'gallery'
  );

  $id = (int) $atts['id'];

  if ( ! empty( $atts['include'] ) ) {
    $_attachments = get_posts(
      array(
        'include'        => $atts['include'],
        'post_status'    => 'inherit',
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'order'          => $atts['order'],
        'orderby'        => $atts['orderby'],
      )
    );

    $attachments = array();
    foreach ( $_attachments as $key => $val ) {
      $attachments[ $val->ID ] = $_attachments[ $key ];
    }
  } elseif ( ! empty( $atts['exclude'] ) ) {
    $attachments = get_children(
      array(
        'post_parent'    => $id,
        'exclude'        => $atts['exclude'],
        'post_status'    => 'inherit',
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'order'          => $atts['order'],
        'orderby'        => $atts['orderby'],
      )
    );
  } else {
    $attachments = get_children(
      array(
        'post_parent'    => $id,
        'post_status'    => 'inherit',
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'order'          => $atts['order'],
        'orderby'        => $atts['orderby'],
      )
    );
  }

  if ( empty( $attachments ) ) {
    return '';
  }
 

 View on GitHub View on Trac