Как загрузить предыдущее или следующее вложение с помощью jquery?

Когда я на странице single.php, я показываю первое вложение изображения. то я хотел бы загрузить следующие (и предыдущие) вложения изображений без перезагрузки страницы.

поэтому в single.php я начал с этого, чтобы получить массив с изображениями html:

<?php $args = array('post_type' => 'attachment', 'post_mime_type' => 'image', 'order'=> 'ASC', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); $attachments = get_posts($args); if ($attachments) { foreach ( $attachments as $attachment ) { $my_image = wp_get_attachment_image($attachment->ID, large) ); $attachments_list[] = $my_image; } } reset($attachments_list); $first_image = current($attachments_list); echo $first_image; ?> 

а затем в файле script.js я хотел бы получить значение моего php-массива $ attachments_list, чтобы сделать что-то вроде этого:

 $(document).ready(function(){ var count = attachments_list.lenght(); var init = 0; var current = init; if (count > 1) { $('#next-img').click(function() { if (current+1 < count) { current++ } else if (current+1 === count) { current = init; } $('#image-container').html(attachments_list[current]); }); $('#previous-img').click(function() { if (current > init) { current-- } else if (current === init) { current = count-1; } $('#image-container').html(attachments_list[current]); }); } }); 

как я могу получить значение массива php $ attachments_list в файле attachments_list внутри файла script.js? Возможно, Джон?

Спасибо за внимание

Solutions Collecting From Web of "Как загрузить предыдущее или следующее вложение с помощью jquery?"

@milo спасибо! Я использовал технику, найденную на странице, которую вы отправили.

он почти работает.

Я добавил это в конце предыдущего кода single.php:

 array_unshift($attachments_list,""); wp_enqueue_script('myscript'); wp_localize_script('myscript', 'attachments_list', $attachments_list); 

Чтобы работать, этот код нужно вызвать до wp_head (). Затем по таинственной причине первый элемент (с индексом 0) печатается после массива JS в заголовке html. Вот почему я должен был сначала сдвинуть пустую строку в массиве, чтобы отправить ее с помощью wp_localize_script.

Последнее:

 var count = attachments_list.length; 

не определено. Все работает нормально, когда я заменяю счет числом, я могу даже получить доступ к элементам массива с помощью attachments_list [index], но длина массива не определена.

любая идея об этом? Спасибо

Я просто столкнулся с вашей проблемой @rogaroga, и я считаю, что это разрешено менее грубо. Я пытался подключить массив настроек через wp_localize_script , где массив был сконструирован с повторными вызовами array_push( $array, $value ) , поэтому массив был, если var_dump'd, как { [0] => { "stuff" }, [1] => { "etc" } } , А затем по строке все его бедные маленькие одинокие после того, как объект var'd настроек в маленьком <script> напечатанном wp_localize_script был «stuff», нарушая мой сценарий. Та же проблема. Итак, я просто указывал индексы массива со значениями массива (определенно взломанными), а wp_localize_script не добавлял материал после настроек var'd, которые были счастливы теперь, включая эту первую настройку. Таким образом, очевидно, что wp_localize_script передает данные, переданные ему, индекс которых равен 0; У меня нет ничего странного, но для вас есть эмпирически необоснованный, но функциональный ответ.