使用分页功能拉取随机附件

时间:2013-08-11 作者:Noob Theory

我想制作一个归档页面,将所有上传的图像拉入该站点。我正在使用当前脚本。它在某种程度上分页,但不显示所有图像。显示140个中有90个左右。

     <?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>

2 个回复
SO网友:s_ha_dum

你的since83_pagination() 函数假定主查询--$wp_query-- 但您需要对一些非常不同的内容进行分页。您需要在中对结果分页$attachments 您正在使用其检索get_children(). 我一看到这个问题就猜到了。

你需要重新考虑这一点。我想到了两个选择。

如果您对在URL中传递分页数据感到满意,请使用paginate_links(). 这可能是最简单的选择。I have written a few answers on using paginate_links.

您的另一个选择是在pre_get_posts. 我没有可以发布的工作代码,但我预计这将更加困难。

我会说,找出你想要走哪条路线,开始吧,然后发布你的新代码。我将根据新代码编辑答案。

SO网友:Chris

如果您使用的是Wordpress 4.5或更高版本,那么可以利用内置的MySQL功能RAND(n) 以及它的种子价值。只要你通过同样的n 在每个查询中,您将得到相同的随机帖子集。

例如:

$randomN = 123456;

$posts = get_posts(array(
    //... arguments here
    \'orderby\' => "rand($randomN)"
));
了解更多有关RAND(n) 中的函数docs.

结束

相关推荐

WP_LIST_PAGES-立即显示比当前级别低1级的页面

我正在建立一个wordpress网站,设置一个事件页面。让我们看看页面菜单层次结构:首先有一个事件登录页。它将显示举办活动的四个地区。该地区内有各种事件。此页面正在按预期工作。当您点击这些页面以及现在显示的内容时,问题就会出现。当您单击某个区域时,我希望显示该特定区域中的事件列表。例如,如果您在区域2的页面上,我希望列出区域2中的所有事件。我已经确保在后端正确设置了它,包括父页面等。我正在使用一个取自wp\\U list\\u页面的codex的示例,我创建了一个新的事件模板,并为事件模板创建了一个新的侧栏