自分の投稿のタイトルをリストしたカスタム作者のページを作成しました。しかし、問題は、ページごとの投稿数の設定値を超えているとページネーションが機能しないことです。私はそれがカスタムループするためにget_posts()を使用しました。
<?php
$ppp = 5; //set my custom number of post to appear
$uid = $curauth->ID;
$args = array(
'numberposts' => $ppp,
'author' => $uid
);
$authorposts = get_posts($args);
//print_r($authorposts);
if ( count( $authorposts ) > 0 ) {
foreach ( $authorposts as $post ): setup_postdata($post) ?>
<li>
<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; ?>
<div class="post-nav">
<div class="previous"><?php previous_posts_link('‹ Previous Page') ?></div>
<div class="next"><?php next_posts_link('Next Page ›') ?></div>
</div>
<?php
} else {
echo '<p>No articles by this user</p>';
}
?>
これはタイトル付きの5つの投稿を表示し、作者によって抜粋されます。...しかし、残りの投稿はページ付けされていません。ページ付けされているのはブログ上の投稿の総数です。
以下のコードをfunctions.php
ファイルに入れます。
function limit_posts_per_page() {
if ( is_author() ) // you can limit other pages as well ( i.e. is_archive() ), if need be.
return 5;
}
add_filter( 'pre_option_posts_per_page', 'limit_posts_per_page' );
author.php
テンプレートを使用していることを確認してください。そうしないと機能しません。ベストプラクティスについては、20のauthor.php
をご覧ください。