WordPress: получить массив со всеми изображениями галерей постов во вложении. Переполнение стека

Я создаю собственный слайдер галереи для темы WordPress, и у меня есть проблема с архитектурой:

Пока я в шаблоне поста (single.php) С помощью этого кода я могу легко получить массив со всеми изображениями галерей постов.

$galleries = get_post_galleries( $post, false);

(КСТАТИ: Ложный параметр должен иметь их URL вместо самих изображений)

но когда я нажимаю на изображение определенной галереи, и я перенаправлен на шаблон вложения (attachment.php), то невозможно иметь тот же массив.

Я пробовал с:

$galleries = get_post_galleries( $post->post_parent, false);

но это не работает должным образом. Действительно, если я построю галерею с некоторыми изображениями, которые изначально были прикреплены к другому посту (например, к более старому), post_parent Параметр будет ссылаться на тот старый пост, а не на тот, который перенаправил меня в шаблон вложения.

Ну, это проблема, потому что мой скрипт-слайдер загружается в attachement.php и он не может обработать правильный массив картинок.

Я не могу вызвать это, пока в single.php потому что слайд-шоу начинается после нажатия на изображение галереи.

(На данный момент я отказываюсь от идеи создания более сложного сценария, который позволит избежать загрузки attachment.php tempalte).

Я ищу обходной путь для извлечения в PHP нужного массива в шаблоне вложения.

0

Решение

Мне удалось сделать это таким образом, внутри цикла, в attachment.php:

// switch to the parent post, the one holding the  shortcode(s)
$post = get_post( wp_get_post_parent_id( get_the_ID( ) ), OBJECT );
setup_postdata( $post );
// get the galleries
$galleries = get_post_galleries( $post, false );
// VERY IMPORTANT: restore the original post (the attachment)
wp_reset_postdata( );

Личное примечание: я думаю, что ошибка находится в цепочке вызовов:

get_post_galleries, do_shortcode_tag, gallery_shortcode

неправильно передает параметр идентификатора поста, так что в определенной точке идентификатор вложения используется вместо того, который был предоставлен пользователем при первом вызове get_post_galleries.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]