get_post_gallery_images()
Повертає всі URL-адреси картинок першої галереї із зазначеного тексту запису (поста), якщо галерея в тексті є.
Є схожа функція get_post_galleries_images() , яка отримує всі галереї, а не лише першу.
Отримує URL зображення мініатюр, а не повних розмірів.
Не працює із блоковим редактором (Гутенберг). Працює лише для шоткоду .
Працює на основі:
get_post_gallery()
get_post_gallery()
1 раз – 0.0064108 сек
(дуже повільно) | 50000 разів – 81.22 сек
(дуже повільно) |
PHP 7.3.12, WP 5.3.2
(дуже повільно) | 50000 разів – 81.22 сек
(дуже повільно) |
PHP 7.3.12, WP 5.3.2
Хуків немає.
Повертає
Строку[]. Список URL картинок галереї, як вони вказані в шоткоді .
Використання
get_post_gallery_images($post);
- $post
(число/WP_Post) - ID/об’єкт запису на посилання картинок галерей якої потрібно отримати.
За замовчуванням: поточний пост
Приклади
#1 Отримаємо список всіх SRC картинок з першої галереї посту 2179
$gal = get_post_gallery_images(2179); /* $gal міститиме 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 ) */
#2 Отримаємо список всіх SRC картинок з першої галереї посту у редакторі Гутенберг
У блочному редакторі (Гутенберг) галерея має інший вигляд – не шорткод, тому функція get_post_gallery_images() поверне порожній масив.
Ця проблема відома і описана в тикеті #43826 , але рішення стане частиною ядра тільки в майбутньому, точної дати немає.
Тимчасове рішення:
/**
* Повертає всі URL-адреси картинок першої галереї із зазначеного тексту запису.
* Поверне результат, якщо галерея є і вставлена як блок (Гутенберг).
*
* @param int|WP_Post $post
*
* @return array
*/
function get_post_block_gallery_images( $post = 0 ) {
$post = get_post($post);
// Запис не знайшовся - повертаємо порожній масив
if ( ! is_a( $post, 'WP_Post' ) ) {
return [];
}
// Блок "Галерея" не знайшовся - повертаємо порожній масив
if ( ! has_block( 'gallery', $post->post_content ) ) {
return [];
}
// Шукаємо всі блоки у контенті
$post_blocks = parse_blocks( $post->post_content );
// Перебираємо всі блоки у пошуках потрібного
foreach ( $post_blocks as $block ) {
// Шукаємо блок "Галерея" з переданими ID зображень
if ( $block['blockName'] === 'core/gallery' && ! empty( $block['attrs']['ids'] ) ) {
return array_map( function ( $image_id ) {
// Отримуємо посилання на оригінал зображення
return wp_get_attachment_image_url( $image_id, 'full' );
}, $block['attrs']['ids'] );
}
}
// Якщо блок "Галерея" не знайшовся - повертаємо порожній масив
return [];
}
нотатки
- Дивіться: get_post_gallery()
список змін
| З версії 3.6.0 | Введено. |
Код get_post_gallery_images() get post gallery images WP 6.0.2
function get_post_gallery_images( $post = 0 ) {
$ Gallery = get_post_gallery ($ Post, false);
return empty( $gallery['src'] ) ? array() : $gallery['src'];
}