是否在单一模板中包含带有分页的最新作者帖子?

时间:2014-05-01 作者:Gixty

我插入了一个WP_Query 在我的单曲里。php模板显示作者最后12篇文章。一切正常,正在显示12个帖子。

现在,我想把它分页。因此,用户可以看到12篇以上的帖子。

这是我的WP_Query 和分页代码:

<?php 
                $paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1; 
                $args = array(
                \'author\'=> get_the_author_meta( \'ID\' ),
                  \'posts_per_page\' => 12,
                  \'paged\'          => $paged,
                  \'order\'    => \'DESC\', 
                    \'post_type\' => \'post\',

                );
                $query1 = new WP_Query( $args );

                // The Loop
                 while ( $query1->have_posts() ) : $query1->the_post(); 
                     get_template_part( \'content\', get_post_format() );
                 endwhile;  

?>


<nav id="nav-below-infinite" class="navigation" role="navigation">
            <h3 class="assistive-text"><?php _e( \'Post navigation\', \'twentytwelve\' ); ?></h3>
            <div class="nav-previous alignleft"><?php next_posts_link( __( \'<span class="meta-nav">&larr;</span> Older posts\', \'twentytwelve\' ), $query1->max_num_pages ); ?></div>
            <div class="nav-next alignright"><?php previous_posts_link( __( \'Newer posts <span class="meta-nav">&rarr;</span>\', \'twentytwelve\' ) ); ?></div>
</nav><!-- #nav-below .navigation -->

<?php wp_reset_postdata(); ?>
第2页未显示任何内容。

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

我发现这比Brad的答案更简单、更有效:

我想出了以下代码,因为我只需要下一页和上一页的链接。此外,它还补充了我上面的代码。我还需要自定义样式,因此我避免使用paginate_links() 功能,因为它没有让我按照我需要的方式来设计它。

$author = get_user_by(\'id\',get_the_author_meta( \'ID\' ));
$total_pages = $query1->max_num_pages;
if ($total_pages > 1) {
    $format = array();
    //HERE WE SET THE BASE FOR OUR PAGE LINKS,
    //IN THIS CASE, WE NEED THE AUTHOR\'S URL PAGE
    $base = esc_url(home_url( \'/\' . $author->user_nicename . \'/\' ));
    $prev_text = __( \'Previous Page\', \'mylangfile\' ); // Supply translatable string
    $next_text = __( \'Next Page\', \'mylangfile\' ); // Supply translatable string
    $current_page = max( 1, get_query_var(\'paged\') );
         $prev_page = $current_page-1;
         $next_page = $current_page+1;
     if( get_option(\'permalink_structure\') ) {
         $format[\'current_page\'] = $base.\'page/\'.$current_page.\'/\';
         $format[\'prev_page\'] = $base.\'page/\'.$prev_page.\'/\';
         $format[\'next_page\'] = $base.\'page/\'.$next_page.\'/\';
     } else {
         //IN CASE YOU ARE NOT USING PRETTYLINKS
     }

echo \'<nav id="nav-below-infinite" class="navigation" role="navigation">\';
  if($paged > 1) {
     echo \'<div class="nav-next alignleft">\';
     echo \'<a href="\'.$format[\'prev_page\'].\'"><span class="meta-nav">←</span>\'.$prev_text.\'</a>\'; 
     echo \'</div>\';
  }
  echo \'<div class="nav-previous alignleft">\';
  echo \'<a href="\'.$format[\'next_page\'].\'"><span class="meta-nav">←</span>\'.$next_text.\'</a>\';
  echo \'</div>\';
echo \'</nav>\';
}

SO网友:Brad Dalton

另一种选择是使用214主题作者。带有模板标记的php文件,该模板标记是主题为分页导航包含的。

然后您可以使用pre_get_posts 更改函数文件中的查询。

You want page navigation for the author archives rather than single post navigation which is what you posted in your question.

您将在名为template tags的文件中找到此代码。主题的includes文件夹中的php。

if ( ! function_exists( \'twentyfourteen_paging_nav\' ) ) :

function twentyfourteen_paging_nav() {

if ( $GLOBALS[\'wp_query\']->max_num_pages < 2 ) {
    return;
}

$paged        = get_query_var( \'paged\' ) ? intval( get_query_var( \'paged\' ) ) : 1;
$pagenum_link = html_entity_decode( get_pagenum_link() );
$query_args   = array();
$url_parts    = explode( \'?\', $pagenum_link );

if ( isset( $url_parts[1] ) ) {
    wp_parse_str( $url_parts[1], $query_args );
}

$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
$pagenum_link = trailingslashit( $pagenum_link ) . \'%_%\';

$format  = $GLOBALS[\'wp_rewrite\']->using_index_permalinks() && ! strpos( $pagenum_link, \'index.php\' ) ? \'index.php/\' : \'\';
$format .= $GLOBALS[\'wp_rewrite\']->using_permalinks() ? user_trailingslashit( \'page/%#%\', \'paged\' ) : \'?paged=%#%\';

// Set up paginated links.
$links = paginate_links( array(
    \'base\'     => $pagenum_link,
    \'format\'   => $format,
    \'total\'    => $GLOBALS[\'wp_query\']->max_num_pages,
    \'current\'  => $paged,
    \'mid_size\' => 1,
    \'add_args\' => array_map( \'urlencode\', $query_args ),
    \'prev_text\' => __( \'&larr; Previous\', \'twentyfourteen\' ),
    \'next_text\' => __( \'Next &rarr;\', \'twentyfourteen\' ),
) );

if ( $links ) :

?>
<nav class="navigation paging-navigation" role="navigation">
    <h1 class="screen-reader-text"><?php _e( \'Posts navigation\', \'twentyfourteen\' ); ?></h1>
    <div class="pagination loop-pagination">
        <?php echo $links; ?>
    </div><!-- .pagination -->
</nav><!-- .navigation -->
<?php
endif;
}
endif;

Code Installation

可以复制模板标记。php文件到您的主题,并删除除上述代码以外的所有代码,然后复制到作者。php文件。

然后只需包含函数文件中的文件。

require get_template_directory() . \'/template-tags.php\';
我最近删除了这段代码,并在其他主题上对其进行了测试,这是一个很好的解决方案,您只需在自定义函数中使用模板标记或直接在模板文件中使用模板标记,就可以轻松地对其进行修改,以处理归档页面导航的任何主题。

结束