get_post_galleries

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

Когда нужно получить только первую галерею, используйте get_post_gallery().
✈ 1 раз = 0.009364с = очень медленно | 50000 раз = 538.27с = тормоз PHP 7.0.4, WP 4.4.2
Хуки из функции:
get_post_galleries
Возвращает

Массив. Список картинок галереи или нескольких галерей. Если параметр $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='http://wp-kama.ru/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='http://wp-kama.ru/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='http://wp-kama.ru/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='http://wp-kama.ru/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='http://wp-kama.ru/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='http://wp-kama.ru/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>

)
*/

Код из


wp-includes/media.php

WP 4.7.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();

				$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];
					}

					$data = shortcode_parse_atts( $shortcode[3] );
					$data['src'] = array_values( array_unique( $srcs ) );
					$galleries[] = $data;
				}
			}
		}
	}

	/**
	 * 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 );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *