我对大多数存档页面使用自定义$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’t find what you’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上搜索了这个问题,并应用了我搜索到的所有建议,但仍然没有任何帮助。问题是什么?
 
                    最合适的回答,由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问题。