WordPress как на ладони
wordpress jino

get_post_galleries() WP 3.6.0

Получает все галереи из текста указанной записи/поста. Ищет шорткоды [gallery] в тексте, обрабатывает их и возвращает массив данных картинок галерей.

Когда нужно получить только первую галерею, используйте get_post_gallery().

Используется в: get_post_gallery(), get_post_galleries_images().
Работает на основе: has_shortcode(), do_shortcode_tag()
✈ 1 раз = 0.009364с = очень медленно | 50000 раз = 538.27с = тормоз PHP 7.0.4, WP 4.4.2
Хуки из функции:
Возвращает

Массив. Список картинок галереи или нескольких галерей. Если параметр $html=true то массив будет содержать готовый HTML код каждой галереи.

Использование

get_post_galleries( $post, $html );
$post(число/WP_Post) (обязательный)
ID или объект записи в тексте которой нужно найти галереи.
$html(логический)
В данных возвращать готовый HTML галереи или данные галереи в виде ID вложений и ссылок на картинки.
По умолчанию: true

Примеры

#1 Получим все галере записи 2179

Этот пример показывает как работает функция. Предполагается что в тексте записи 2179 присутствуют 2 галереи - 2 шорткода [gallery]:

$gal = get_post_galleries(2179, false);

/* $gal будет равно
Array
(
	[0] => Array
		(
			[ids] => 6790,6789,6788
			[src] => Array
				(
					[0] => http://wp-kama.ru/wp-content/uploads/2016/02/image12-80x80.png
					[1] => http://wp-kama.ru/wp-content/uploads/2016/02/image11-80x80.png
					[2] => http://wp-kama.ru/wp-content/uploads/2016/02/image10-80x80.png
				)

		)

	[1] => Array
		(
			[ids] => 6762,6761,6760
			[src] => Array
				(
					[0] => http://wp-kama.ru/wp-content/uploads/2016/02/image008-80x80.jpg
					[1] => http://wp-kama.ru/wp-content/uploads/2016/02/image007-80x80.jpg
					[2] => http://wp-kama.ru/wp-content/uploads/2016/02/image006-80x80.jpg
				)

		)

)
*/

$gal = get_post_galleries(25, true);

/*$gal будет равно
Array
(
	[0] => <div id='gallery-3' class='gallery galleryid-19 gallery-columns-3 gallery-size-thumbnail'><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image12'><img width="80" height="80" src="/wp-content/uploads/2016/02/image12-80x80.png" class="attachment-thumbnail size-thumbnail" alt="image12" /></a>
			</div></figure><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image11'><img width="80" height="80" src="/wp-content/uploads/2016/02/image11-80x80.png" class="attachment-thumbnail size-thumbnail" alt="image11" /></a>
			</div></figure><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image10'><img width="80" height="80" src="/wp-content/uploads/2016/02/image10-80x80.png" class="attachment-thumbnail size-thumbnail" alt="image10" /></a>
			</div></figure>
		</div>

	[1] => <div id='gallery-4' class='gallery galleryid-19 gallery-columns-3 gallery-size-thumbnail'><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image008'><img width="80" height="80" src="/wp-content/uploads/2016/02/image008-80x80.jpg" class="attachment-thumbnail size-thumbnail" alt="image008" /></a>
			</div></figure><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image007'><img width="80" height="80" src="/wp-content/uploads/2016/02/image007-80x80.jpg" class="attachment-thumbnail size-thumbnail" alt="image007" /></a>
			</div></figure><figure class='gallery-item'>
			<div class='gallery-icon landscape'>
				<a href='/article/sajt-na-konstruktore-wix/image006'><img width="80" height="80" src="/wp-content/uploads/2016/02/image006-80x80.jpg" class="attachment-thumbnail size-thumbnail" alt="image006" /></a>
			</div></figure>
		</div>

)
*/

Код get post galleries: wp-includes/media.php WP 4.8.2

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

Cвязанные функции

Из метки: gallery (галереи)

get_post_galleries Комментариев нет

Здравствуйте, !

Ваш комментарий