Как сделать пагинацию вывода фото через foreach?

Для добавления пагинации к выводу фото через цикл foreach в WordPress, необходимо выполнить несколько шагов.

1. Определите сколько фото вы хотите отображать на одной странице. Допустим, вы хотите отобразить 6 фото на странице.

2. Вам потребуется получить все фото, которые вы хотите отобразить. Можно использовать функцию get_posts для этого. Например:

$args = array(
    'post_type' => 'attachment',
    'post_mime_type' =>'image',
    'post_status' => 'inherit',
    'posts_per_page' => -1,
);
$photos = get_posts($args);

3. Обработайте массив $photos и разделите его на страницы, каждая страница содержит заданное количество фото. Можно использовать функцию array_chunk для этого. Например:

$photos_per_page = 6;
$paginated_photos = array_chunk($photos, $photos_per_page);

4. Получите запрошенный номер страницы из параметров URL. Можно использовать get_query_var('paged') или get_query_var('page'). Например:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

5. Выведите фото для текущей страницы, используя foreach. Например:

$current_photos = $paginated_photos[$paged - 1];
foreach ($current_photos as $photo) {
    $image_url = wp_get_attachment_image_url($photo->ID, 'full');
    echo '<img src="' . $image_url . '" alt="Photo">';
}

6. Добавьте пагинацию перед циклом foreach для навигации между страницами. Можно использовать функцию paginate_links для этого. Например:

$pagination_args = array(
    'base' => get_pagenum_link(1) . '%_%',
    'format' => '/page/%#%',
    'total' => count($paginated_photos),
    'current' => $paged,
    'prev_next' => true,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
);
echo paginate_links($pagination_args);

В итоге у вас будет вывод фото с пагинацией через цикл foreach. Когда пользователь кликает на ссылку пагинации, вы можете использовать параметр paged для загрузки соответствующих фото и вывода их на другой странице.