在自定义作者页面上对作者的帖子列表进行分页(另一种理论)

时间:2011-05-18 作者:Ven

这是我在自定义作者页面上自定义分页的另一个故事。我想在那里显示作者的头像、描述、网站和一些附加字段,当然还要列出他的帖子并分页。。。。

以下是我的自定义作者页面的屏幕截图:

正如你所看到的,一切似乎都井然有序。现在,问题是分页。我使用代码Kreisi (Pagination w/o using plugins). 我所做的是创建一个自定义循环并将其调用到Kreisi的函数。

代码如下:

    $uid = $curauth->ID;
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$authloop = new WP_Query("author=$uid&paged=$paged");
$ppp = 5; //set my custom number of post to appear

$args = array(
           \'post_per_page\' => $ppp,
           \'author\' => $uid,
           \'paged\' => $paged

 );

$authorposts = get_posts($args);


if ( count( $authorposts ) > 0 ) {              

        foreach ( $authorposts as $post ):  setup_postdata($post)            

        ?>
                <li>
                        <?php if ( has_post_thumbnail() ) : ?>
                                <img src="<?php echo bloginfo(\'template_url\'); ?>/inc/scripts/timthumb.php?src=<?php echo catch_that_image(); ?>&w=40&h=40&zc=1&q=30" alt="<?php the_title(); ?>" class="authorpostimg"/>

                        <?php else :    ?>
                                <img src="<?php echo bloginfo(\'template_url\'); ?>/inc/scripts/timthumb.php?src=<?php echo catch_that_image(); ?>&w=40&h=40&zc=1&q=100" alt="<?php the_title(); ?>" class="authorpostimg"/>
                        <?php endif; ?>

                        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>" class="authorpostlink"><?php the_title(); ?></a>
                        <?php the_excerpt(); ?>
                </li>
        <?php

        endforeach;  

        wnw_authpagination($authloop->max_num_pages);

} else {
        echo \'<p>No articles by this user</p>\';
}
下面是进一步理解的场景。

假设这个博客总共有30篇博文,而作者文弗朗西斯有15篇。如果您可以在我的变量上看到,我确实将post\\u per\\u page值设置为5。在Kreisi函数上,它的范围是2。(请访问他的代码链接以进一步了解)因此,必须发生的是,分页应该显示5个页面按钮

[c] [2][3][>][>]

其中[c]是当前。。。[3] [>>]是最后一页(第3页)。但我的情况是,当你在[>>]上悬停时,它会显示/page/6,我想这就是博客的总帖子数。

如果你点击3(第三页)。它仍将显示4,5和[>>],不应该显示。如下图所示:

[<;][<;][1] [2][c][4][5][>][>]

我希望您了解情况和问题。再次感谢上帝保佑!

PS:kreisi不再支持他的精彩代码了,所以我必须自己做这件事。我需要你们的帮助。非常感谢。

2 个回复
SO网友:kaiser

试用my(免费&开源)"Easy Pagination Deamon". 这是相当先进的,应该在作者模板也工作。只需使用链接上的自述文件,即可用于分页的帖子&;还有页面。您还可以将其集成到主题文件夹中,并在函数中调用它。phpinclude_once( \'pagination.class.php\' ); 然后用你的节奏oxo_pagination( array( \'your arguments\' ) );.

SO网友:Jan Fabry

您正在此处创建两个额外的循环:

$authloop = new WP_Query("author=$uid&paged=$paged");
以及:

$authorposts = get_posts( array(
    \'post_per_page\' => $ppp, // Shouldn\'t this be postS_per_page?
    \'author\' => $uid,
    \'paged\' => $paged
) );
您使用$authloop 获取总页数,但不指定posts_per_page 因此它将在那里采用默认值,该值可能与您在实际使用的post循环中指定的5不同。

其次,大多数情况下,使用带有分页的自定义循环是个坏主意。问题是WordPress总是会为您执行查询(以设置主循环),并且需要paged URL中的参数。假设您在作者档案中。默认值posts_per_page 是10。这位作者有40篇帖子。您的自定义循环每页仅显示5篇文章。如果您现在在第5页,WordPress将查询41-50篇文章,而不是像您在自定义循环中那样查询21-25篇文章。WordPress将找不到帖子并加载404.php 模板而不是您的author.php 样板

因此,最好不要执行自定义循环,而是通过pre_get_posts 或者另一个钩子。

结束

相关推荐

Broken category pagination

出于某种原因,下面的代码一直工作到我到达第三页并给出404。不使用任何插件就可以修复它吗?<?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(\'cat=\'. $id .\'&posts_per_page=4&paged=\'.$paged); while ($wp_query->have_posts()) : $wp_query