从传递的帖子内容中检索图库。

原型

get_post_galleries( int|WP_Post $post, bool $html = true )

参数

$post (int|WP_Post) (Required) 邮政ID或对象。

$html (bool) (Optional)  是否返回数组中的HTML或数据。

返回值

(array)  一个数组列表,每个数组包含从扩展的短代码解析的图库数据和srcs。

源文件

路径:wp-includes/media.php

<?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 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 );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/get_post_galleries/