get_post_galleries( int|WP_Post $post, bool $html = true )
Retrieves galleries from the passed post’s content.
Parameters
- $post
-
(Required) Post ID or object.
- $html
-
(Optional) Whether to return HTML or data in the array.
Default value: true
Return
(array) A list of arrays, each containing gallery data and srcs parsed from the expanded shortcode.
Source
File: wp-includes/media.php
function get_post_galleries( $post, $html = true ) {
if ( ! $post = get_post( $post ) )
return array();
if ( ! has_shortcode( $post->post_content, 'gallery' ) )
return array();
$galleries = array();
if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $post->post_content, $matches, PREG_SET_ORDER ) ) {
foreach ( $matches as $shortcode ) {
if ( 'gallery' === $shortcode[2] ) {
$srcs = array();
$shortcode_attrs = shortcode_parse_atts( $shortcode[3] );
if ( ! is_array( $shortcode_attrs ) ) {
$shortcode_attrs = array();
}
// Specify the post id of the gallery we're viewing if the shortcode doesn't reference another post already.
if ( ! isset( $shortcode_attrs['id'] ) ) {
$shortcode[3] .= ' id="' . intval( $post->ID ) . '"';
}
$gallery = do_shortcode_tag( $shortcode );
if ( $html ) {
$galleries[] = $gallery;
} else {
preg_match_all( '#src=([\'"])(.+?)\1#is', $gallery, $src, PREG_SET_ORDER );
if ( ! empty( $src ) ) {
foreach ( $src as $s ) {
$srcs[] = $s[2];
}
}
$galleries[] = array_merge(
$shortcode_attrs,
array(
'src' => array_values( array_unique( $srcs ) )
)
);
}
}
}
}
/**
* Filters the list of all found galleries in the given post.
*
* @since WP-3.6.0
*
* @param array $galleries Associative array of all found post galleries.
* @param WP_Post $post Post object.
*/
return apply_filters( 'get_post_galleries', $galleries, $post );
}
Changelog
Version | Description |
---|---|
WP-3.6.0 | Introduced. |