仅分页在作者模板中不起作用

时间:2012-08-25 作者:dev-jim

我对大多数存档页面使用自定义$wp\\u查询,如分类法、索引、类别和作者页面。一切正常,除了一件奇怪的事情——作者模板页面分页失败。分页停止在第2页上工作,它直接指向404页。在其他存档页上分页,效果很好。

这是我的作者代码。php模板:

<?php get_header(); ?>
<section id="primary">
<div id="content" role="main">

<?php $curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) : get_userdata(intval($author));
?>

            <?php toolbox_content_nav( \'nav-above\' ); ?>


            <?php   
            $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
            $args = array(
            \'showposts\'=> 2,
            \'paged\' => $paged,
            \'post_type\'=> array(\'cpt1\',\'cpt2\'));    

                    $query = new WP_Query( $args );
             ?>
        <?php if ($query ->have_posts() ) : ?>
            <h1>Posts from <?php echo $curauth->first_name; ?> </h1>
              <?php while ( $query->have_posts() ) : $query->the_post(); ?>
                                 <li>
                                  <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent    Link: <?php the_title(); ?>">
                                 <?php the_title(); ?></a>,
                                  <?php the_time(\'d M Y\'); ?> in <?php the_category(\'&\');?>
                                  </li>

            <?php endwhile; ?>

            <?php wp_pagenavi( array( \'query\' => $query) );  ?>

        <?php else : ?>

            <article id="post-0" class="post no-results not-found">
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( \'Nothing Found\', \'toolbox\' ); ?></h1>
                </header><!-- .entry-header -->

                <div class="entry-content">
                    <p><?php _e( \'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.\', \'toolbox\' ); ?></p>
                    <?php get_search_form(); ?>
                </div><!-- .entry-content -->
            </article><!-- #post-0 -->

        <?php endif; ?>

        </div><!-- #content -->
    </section><!-- #primary -->

     <?php get_sidebar(); ?>
     <?php get_footer(); ?>
无论如何,我都在使用wp\\u pagenavi插件进行分页。显然,wp\\u pagenavi知道有页面(因为它在分页链接上显示了不止一个页面),但当我转到第二页时,发现没有找到帖子(404页)。

我已经在google上搜索了这个问题,并应用了我搜索到的所有建议,但仍然没有任何帮助。问题是什么?

2 个回复
最合适的回答,由SO网友:Milo 整理而成

这里有几个问题,主要问题是您的查询将每页的帖子设置为两个,但可用的页面数与您的自定义查询没有关系。如果您的“阅读设置”下的“博客页面最多显示”设置为10,并且作者只有<;=10篇帖子,没有第二页。

您将发现的另一个问题是,您没有在查询中设置author参数,因此您没有从特定的作者那里获取帖子。

要解决这两个问题,并消除创建辅助查询以替换默认查询时的资源浪费,您应该从模板中删除所有这些内容,而不是使用pre_get_posts 在您的functions.php. 这样,分页将自动处理。

function wpa63043_author_pre_get( $query ) {
    if ( $query->is_author() && $query->is_main_query() ) :
        $query->set( \'posts_per_page\', 2 );
        $query->set( \'post_type\', array(\'cpt1\',\'cpt2\') );
    endif;
}
add_action( \'pre_get_posts\', \'wpa63043_author_pre_get\' );

SO网友:smogg

尝试更改您的页面标记。如果我没记错的话,它不能与自定义帖子类型相同。

@编辑:我现在没有时间检查,但以下是可能导致此问题的原因:

您有url为的页面yoursite.com/author.您的站点可以使用以下链接显示单个作者,示例中名为“John”:yoursite.com/author/john/. 尝试添加导航时,将创建以下url:yoursite.com/author/page/2. WordPress假设示例中的单词“page”实际上是作者的名字,而作者的名字并不存在,这就是为什么你会得到404错误。如果您更改url以显示单个作者John:yoursite.com/author/john 和列出所有作者的页面:yoursite.com/authors/ (已添加s), 这样就不会有url问题。

结束

相关推荐

如何在wp-Query中比较不同的时间戳以获取事件自定义帖子类型?

我有一个带有自定义元数据库的自定义帖子类型(as seen on wptheming.com) 并且希望进行查询以显示即将发生的事件,例如在侧边栏中,过去的日期被忽略。但我需要一个当前时间的值来和事件开始时间进行比较。现在我从current_time(\'mysql\') 看起来是这样的:2012-02-16 13:15:31元的开始时间如下所示:201108121100如何使这两个日期具有可比性?我可以在查询中执行吗?或者是否有其他解决方案?以下是我到目前为止的查询(值留空,时间戳回显):<?ph