Получение ссылок на изображения из галерей в WordPress

# get_post_galleries_images() │ WP 3.6.0

Функция get_post_galleries_images() позволяет получить ссылки на изображения из галерей, если они есть в содержимом поста.

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

Функция использует другую функцию get_post_galleries(). Эта функция может быть довольно медленной, особенно если вы вызываете её много раз. 

### Общая информация о производительности:

- 1 вызов — 0.009545 сек (очень медленно)
- 50000 вызовов — 595.55 сек (крайне медленно)

Это важно учитывать, если у вас много постов или галерей.

Функция не содержит хуков.

## Возвращаемое значение

Функция возвращает массив. Это список списков, каждый из которых содержит ссылки на изображения, полученные из расширенного шорткода.

## Синтаксис

```php
get_post_galleries_images( $post );

Параметры

  • $post (int|WP_Post) — ID поста или объект WP_Post. По умолчанию используется глобальный $post.

Примеры использования

Пример 1: Получение списка всех ссылок на изображения из галерей поста с ID 2179

Предположим, у вас есть пост с ID 2179, который содержит 2 галереи (2 шорткода ). Чтобы получить все ссылки на изображения из этих галерей, используйте следующий код:

$gal = get_post_galleries_images( 2179 );

/* $gal будет содержать:
Array
(
    [0] => Array
        (
            [0] => http://wp-kama.com/wp-content/uploads/2016/02/image12-80x80.png
            [1] => http://wp-kama.com/wp-content/uploads/2016/02/image11-80x80.png
            [2] => http://wp-kama.com/wp-content/uploads/2016/02/image10-80x80.png
        )

    [1] => Array
        (
            [0] => http://wp-kama.com/wp-content/uploads/2016/02/image008-80x80.jpg
            [1] => http://wp-kama.com/wp-content/uploads/2016/02/image007-80x80.jpg
            [2] => http://wp-kama.com/wp-content/uploads/2016/02/image006-80x80.jpg
        )
)
*/

Пример 2: Добавление URL изображений к содержимому поста, если пост содержит галерею

Вот простой пример, как добавить ссылки на изображения в содержимое поста или страницы, если имеется хотя бы одна галерея:

add_filter( 'the_content', 'wpdocs_show_gallery_image_urls' );

/**
 * Добавляет список URL изображений к содержимому, если пост содержит 
 * одну или несколько галерей.
 *
 * @param string $content Содержимое поста.
 *
 * @return string (Возможно изменённое) содержимое поста.
 */
function wpdocs_show_gallery_image_urls( $content ) {
    global $post;

    // Выполняем только для единственных постов.
    if ( ! is_singular() ) {
        return $content;
    }

    // Проверяем, есть ли в посте галерея.
    if ( ! has_shortcode( $post->post_content, 'gallery' ) ) {
        return $content;
    }

    // Получаем все галереи этого поста.
    $galleries = get_post_galleries_images( $post );

    if ( ! empty( $galleries ) ) {
        $image_list = '
    '; // Перебираем все найденные галереи foreach( $galleries as $gallery ) { // Перебираем каждое изображение в каждой галерее. foreach ( $gallery as $image ) { $image_list .= '
  • ' . $image . '
  • '; } } $image_list .= '
'; // Добавляем наш список изображений в содержимое поста $content .= $image_list; } return $content; }

Примечания

  • Для получения информации о галереях используйте функцию get_post_galleries().

История изменений

  • С версии 3.6.0 — функция была введена.

Код функции

function get_post_galleries_images( $post = 0 ) {
    $galleries = get_post_galleries( $post, false );
    return wp_list_pluck( $galleries, 'src' );
}

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

  • gallery — для работы с галереями.
  • gallery_shortcode() — для генерации шорткода галереи.
  • get_post_galleries() — для получения галерей поста.
  • get_post_gallery() — для получения информации о галерее.
  • get_post_gallery_images() — для получения изображений из галереи.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *