Мне сложно отказаться от использования поля файла CMB2 в моей галерее, но у него нет возможности (встраиваться) в paginate (например, ACF), и мои навыки PHP не хватает. Я могу сделать это с помощью jQuery, но Я хочу реальные страницы.CMB2 file_list paginate (real pages) foreach использует сериализованные данные
Это приближается к тому, что мне нужно, и это связано с другим вопросом. Он разбивает 5 результатов из $ files (get_post_meta) и создает страницы, но изображения представляют собой одинаковые изображения на всех страницах. Я вне пределов своего мозга.
$ attachment_id => $ attachment_url - это индивидуальное изображение, выбранное из медиатеки.
$files as $attachment_id => $attachment_url
Вот что я до сих пор (вы можете угробить его в пользу чего-то лучшего):
function gallery_loop() {
if(get_query_var('page')) {
$page = get_query_var('page');
} else {
$page = 1;
}
$img_size = 'portfolio-catalog';
$files = get_post_meta(get_the_ID(), '_cmb_gallery_images', true);
$limit = 5;
$total = count($files);
$pages = ceil($total/$limit);
$curr_page = isset($_GET['page']);
$offset = ($curr_page - 1) * $limit;
$items_array = array_chunk((array) $files, $limit, true);
$files_array = array_slice($items_array, $offset, true); // this is showing the same 5 items on all the pages
foreach ($files_array as $files) {
echo '<div style="border:1px solid red;">'; //BEGIN FAKE "page" so I can see if they are splitting correctly
foreach ($files as $attachment_id => $attachment_url) {
$page=1;
echo '<div class="file-list-image">';
echo wp_get_attachment_image($attachment_id, $img_size);
echo '</div>';
$page++;
} // end $files as $attachment_id => $attachment_url
echo '</div>'; //END "page" so I can see if they are splitting correctly
} // end foreach $files_array as $files
//the correct amount of pages are showing up but the items are all the same
echo paginate_links(array(
'base' => get_permalink() . '%#%' . '/',
'format' => '?page=%#%',
'current' => $page,
'total' => $pages
));
}
// end function
ответа на вопросы в комментариях:
Это для шаблон страницы под названием gallery-page.php. Это страница с типом поля CMB2, называемым file_list, и это место для прикрепления изображений (они прикреплены не к странице, а к этому полю, чтобы вы могли захватить все и загрузить к ней).
Когда я делаю print_r из $files = get_post_meta(get_the_ID() , '_cmb_gallery_images', true);
я получаю:
Array([956] => http://mydevserver.dev/wp-content/uploads/2016/02/bamboo-logo.jpg [960] => http://mydevserver.dev/wp-content/uploads/2016/02/tampa_guitar_logo.jpg [958] => http://mydevserver.dev/wp-content/uploads/2016/02/CNG-refueling.jpg [974] =>
и так далее.
Является ли это для одной страницы –
, как вы приняли массив изображения из get_post_meta (get_the_ID(), '' _cmb_gallery_images, правда); Таким образом, либо все изображения должны быть использованы на одной странице, либо для этого был создан тип публикации галереи. Просьба уточнить ? –
Итак, вы зацикливаете функцию как?Предполагая, что вы хотите это для одной страницы, вы вызываете 'get_post_meta (get_the_ID(), '_cmb_gallery_images', true)', который просто получает мета-сообщение этой страницы. Когда вы делаете 'print_r ($ files);' прямо под определением переменной, что вы получаете? –