Потяните случайные вложения с разбиением на страницы

Я хочу создать страницу архива, которая загружает все загруженные изображения на сайт. Я использую текущий скрипт. Его фрагментация несколько, но не показывает все изображения. Показаны около 90 из 140.

<?php query_posts(array('posts_per_page'=>'8','paged' => get_query_var('paged'))); ?> <?php if ( $images = get_posts(array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'numberposts' => -1, 'orderby' => 'rand', 'posts_per_page'=>'8', 'paged' => $paged, 'post_mime_type' => 'image',))) { foreach( $images as $image ) { $attachmenturl=wp_get_attachment_url($image->ID); $attachmentimage=wp_get_attachment_image_src( $image->ID, postgallery ); $imageDescription = apply_filters( 'the_description' , $image->post_content ); $imageTitle = apply_filters( 'the_title' , $image->post_title ); if (!empty($imageDescription)) { echo '<a href="'.$imageDescription .'"><img src="' . $attachmentimage[0] . '" alt="" /></a>'; } else { echo ' <div class="span3_3"> <div class="widget"> <div class="well"> <div class="view"> <a href="' .get_attachment_link($image->ID). '" class="view-back" style="display: none;"></a> <img src="' . $attachmentimage[0] . '" alt="" /> </div> </div> </div> </div> '; } } } else { echo "No Image"; } ?> </div> <div class='pagination pagination-centered'><ul><li> <!--Pagination--> <?php echo paginate_links( $args ) ?> <?php global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages ) ); ?> </li></ul></div> 

Solutions Collecting From Web of "Потяните случайные вложения с разбиением на страницы"

Ваша since83_pagination() принимает основной запрос – $wp_query – но вам нужно разбивать что-то совсем другое. Вы должны get_children() страницы на $attachments которые вы get_children() с помощью get_children() . Это было мое предположение, как только я увидел этот вопрос.

Вам нужно будет переосмыслить это. На ум приходят два варианта.

Если вы довольны передачей данных разбивки на страницы, используйте paginate_links() . Вероятно, это самый простой вариант. Я написал несколько ответов на использование paginate_links .

Другой вариант – использовать фильтр на pre_get_posts . У меня нет рабочего кода для публикации, но я ожидаю, что это будет сложнее.

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

Если вы используете WordPress версии 4.5 или выше, вы можете воспользоваться встроенной функцией MySQL RAND(n) вместе с ее начальным значением. Пока вы передаете один и тот же n для каждого запроса, вы получите тот же набор случайных сообщений.

В качестве примера:

 $randomN = 123456; $posts = get_posts(array( //... arguments here 'orderby' => "rand($randomN)" )); 

Подробнее о функции RAND(n) в документах .