Функция get_post_galleries_images()
в WordPress используется для получения всех URL изображений из всех галерей, присутствующих в содержимом записи. Это удобно, если запись содержит несколько шорткодов галерей gallery
, и вам нужно извлечь все изображения из них.
get_post_galleries_images( int|WP_Post $post ): array
Параметры
- $post (опциональный): ID записи (int) или объект записи (WP_Post), из которой нужно получить галереи. Если параметр не указан, по умолчанию используется текущая запись (глобальная переменная
$post
).
Возвращаемое значение
Функция возвращает массив, где каждый элемент — это вложенный массив, содержащий URL изображений из отдельной галереи. Если в записи нет галерей, функция вернет пустой массив.
Важные моменты
- Функция работает только с шорткодами
gallery
и не поддерживает галереи, созданные через блочный редактор Гутенберг. get_post_galleries_images()
извлекает только URL изображений миниатюр, а не полные версии изображений.- Для работы с первой галереей записи используйте функцию
get_post_gallery_images()
.
Пример 1: Получение всех изображений из всех галерей записи
Допустим, у нас есть запись с ID 5421, в которой присутствуют две галереи. Мы хотим получить все URL изображений из этих галерей и вывести их в виде списка.
$galleries = get_post_galleries_images(5421);
if (!empty($galleries)) {
foreach ($galleries as $gallery) {
echo '<ul>';
foreach ($gallery as $image_src) {
echo '<li><img src="' . esc_url($image_src) . '" alt="Gallery image"></li>';
}
echo '</ul>';
}
} else {
echo 'В записи нет галерей.';
}
/* Пример структуры данных, которые вернет $galleries:
Array
(
[0] => Array
(
[0] => http://example.com/wp-content/uploads/2024/05/image1-80x80.jpg
[1] => http://example.com/wp-content/uploads/2024/05/image2-80x80.jpg
[2] => http://example.com/wp-content/uploads/2024/05/image3-80x80.jpg
)
[1] => Array
(
[0] => http://example.com/wp-content/uploads/2024/05/image4-80x80.jpg
[1] => http://example.com/wp-content/uploads/2024/05/image5-80x80.jpg
[2] => http://example.com/wp-content/uploads/2024/05/image6-80x80.jpg
)
)
*/
Пример 2: Добавление списка URL изображений в конец контента записи
Этот пример показывает, как можно модифицировать контент записи, добавляя в него список всех URL изображений из галерей.
function append_gallery_image_urls_to_content($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 = '<ul>';
// Проходим по каждой галерее и каждому изображению.
foreach ($galleries as $gallery) {
foreach ($gallery as $image_src) {
$image_list .= '<li>' . esc_url($image_src) . '</li>';
}
}
$image_list .= '</ul>';
// Добавляем список в конец контента записи.
$content .= $image_list;
}
return $content;
}
add_filter('the_content', 'append_gallery_image_urls_to_content');
Пример 3: Получение URL изображений первой галереи
Если нужно обработать только первую галерею, вместо get_post_galleries_images()
можно использовать функцию get_post_gallery_images()
. Но для примера мы покажем, как можно извлечь данные только из первой галереи с использованием get_post_galleries_images()
.
$galleries = get_post_galleries_images(3250);
// Выводим только первую галерею.
if (!empty($galleries)) {
$first_gallery = $galleries[0];
echo '<ul>';
foreach ($first_gallery as $image_src) {
echo '<li><img src="' . esc_url($image_src) . '" alt="First gallery image"></li>';
}
echo '</ul>';
}
/* Пример данных:
Array
(
[0] => Array
(
[0] => http://example.com/wp-content/uploads/2024/07/gallery-image1-80x80.jpg
[1] => http://example.com/wp-content/uploads/2024/07/gallery-image2-80x80.jpg
[2] => http://example.com/wp-content/uploads/2024/07/gallery-image3-80x80.jpg
)
)
*/
Заключение
Функция get_post_galleries_images()
— это мощный инструмент для получения всех изображений из галерей записи WordPress. Она позволяет извлекать все URL изображений и кастомизировать их вывод на сайте. Это особенно полезно для создания уникальных представлений галерей и работы с большим количеством визуального контента.