Функция get_post_gallery()
предназначена для извлечения первой галереи из содержимого записи WordPress. Это удобно, если в записи присутствует несколько галерей, но вам нужно получить только первую. Функция возвращает либо массив данных галереи, либо готовый HTML-код, в зависимости от параметра.
get_post_gallery( int|WP_Post $post, bool $html = true ): string|array
Параметры
- $post (обязательный): ID записи (int) или объект записи (WP_Post), из которой нужно получить галерею. Если параметр не указан, по умолчанию используется текущая запись в глобальном контексте.
- $html (опциональный): логическое значение, указывающее, нужно ли возвращать HTML-код галереи или массив данных. По умолчанию
true
, что означает возврат HTML.
Возвращаемое значение
- Массив данных галереи (идентификаторы вложений и ссылки на изображения), если
$html = false
. - Строку с HTML-кодом галереи, если
$html = true
. false
, если галерея отсутствует в записи.
Важные моменты
- Функция работает только с шорткодом
gallery
и не поддерживает галереи, созданные в блочном редакторе Гутенберг. - Используется как основа для работы с первой галереей записи.
Пример 1: Получение первой галереи в формате данных
В этом примере мы получим первую галерею записи с ID 3215 в виде массива данных. Предполагается, что запись содержит галерею, и мы хотим вывести ссылки на изображения.
$gallery_data = get_post_gallery(3215, false);
/* $gallery_data будет равно
Array
(
[ids] => 8001,8002,8003
[src] => Array
(
[0] => http://example.com/wp-content/uploads/2024/05/image1-80x80.png
[1] => http://example.com/wp-content/uploads/2024/05/image2-80x80.jpg
[2] => http://example.com/wp-content/uploads/2024/05/image3-80x80.jpg
)
)
*/
// Выводим изображения
if ($gallery_data) {
foreach ($gallery_data['src'] as $src) {
echo '<img src="' . esc_url($src) . '" alt="Gallery image" class="my-custom-class">';
}
}
Пример 2: Получение первой галереи в формате HTML
Здесь мы получаем HTML-код первой галереи записи с ID 6547 и выводим его на экран.
$gallery_html = get_post_gallery(6547, true);
if ($gallery_html) {
echo $gallery_html;
}
/* $gallery_html будет содержать строку
<div id='gallery-2' class='gallery galleryid-6547 gallery-columns-4 gallery-size-thumbnail'>
<figure class='gallery-item'>
<div class='gallery-icon portrait'>
<a href='/gallery/image1'><img src='/wp-content/uploads/2024/05/image1-80x80.png' alt='image1' class='attachment-thumbnail size-thumbnail' /></a>
</div>
</figure>
<figure class='gallery-item'>
<div class='gallery-icon portrait'>
<a href='/gallery/image2'><img src='/wp-content/uploads/2024/05/image2-80x80.jpg' alt='image2' class='attachment-thumbnail size-thumbnail' /></a>
</div>
</figure>
<figure class='gallery-item'>
<div class='gallery-icon portrait'>
<a href='/gallery/image3'><img src='/wp-content/uploads/2024/05/image3-80x80.jpg' alt='image3' class='attachment-thumbnail size-thumbnail' /></a>
</div>
</figure>
</div>
*/
Пример 3: Вывод кастомной галереи без использования HTML
Этот пример демонстрирует, как можно извлекать данные о галерее и кастомизировать вывод изображений:
$gallery = get_post_gallery(7890, false);
if ($gallery) {
foreach ($gallery['src'] as $src) {
echo '<img src="' . esc_url($src) . '" class="custom-gallery-image" alt="Custom Gallery Image">';
}
}
/* $gallery будет равно
Array
(
[ids] => 9001,9002,9003
[src] => Array
(
[0] => http://example.com/wp-content/uploads/2024/06/image4-80x80.jpg
[1] => http://example.com/wp-content/uploads/2024/06/image5-80x80.jpg
[2] => http://example.com/wp-content/uploads/2024/06/image6-80x80.jpg
)
)
*/
Заключение
Функция get_post_gallery()
является полезным инструментом для быстрого извлечения первой галереи из записи WordPress. Она позволяет гибко работать с галереями, выводя как данные, так и HTML-код, что открывает широкие возможности для кастомизации и работы с визуальным контентом на сайте.