[OK]をクリックします。カスタム作成者ページのカスタムページネーションの別のストーリーです。私が何をしたいのかは作者のアバター、説明、ウェブサイト、そしていくつかの追加フィールドを表示すること、そしてもちろん彼の投稿をリストしてそれをページ付けすることです....
これが私のカスタム作者ページのスクリーンショットです: http://i56.tinypic.com/2cosldy.png
ご覧のとおり、すべてが順調に進んでいるようです。さて、問題はページネーションです。私は Kreisi(プラグインを使わないでページネーション) でコードを使いました。私がしたことはカスタムループを作成して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のブログ記事があり、作者のVen Francisに15があるとします。変数で見ることができるのであれば、post_per_pageの値を5に設定しました。そしてKreisiの関数では範囲は2です。それをさらに理解するための彼のコードへのリンク)だからそれが起こるべきことは、ページネーションが5つのページボタンを表示するべきであるということです
[c] [2] [3] [>] [>>]
ここで、[c]は現在の... [3]、[>>]は最後のページ(3ページ目)です。しかし、私の状況で起こっていることは、あなたが[>>]の上にマウスを持っていくと/ page/6と表示され、私はそれがブログの投稿の総数を得ていると思うということです。
そしてあなたが3(3ページ目)をクリックするならば。それでも、4、5と[>>]を表示しますが、表示されません。下の図のように
[<<] [<] [1] [2] [c] [4] [5] [>] [>>]
シナリオと問題を理解してください。もう一度感謝し、神のご加護を!
PS:kreisiはもう彼のすばらしいコードのサポートをしていないので、私は自分でこれをやらなければならない。私はあなたたちから少し助けが必要です。ありがとうございました!
私の(無料&オープンソース) "Easy Pagination Deamon" を試してください。それはかなり高度であり、作者のテンプレート上でも動作するはずです。リンクに表示されているreadmeをそのまま使用して、ページ区切り付きの投稿やページにも適用できます。あなたのテーマフォルダにそれを統合してinclude_once( 'pagination.class.php' );
のような何かであなたのfunctions.phpでそれからそれをoxo_pagination( array( 'your arguments' ) );
でそれから呼び出すこともできます。
ここで2つの追加ループを作成しています。
$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
値を指定しないため、デフォルト値が使用されます。実際のポストループで指定した5と同じにはならない場合があります。
それに加えて、ほとんどの場合、ページ区切り付きのカスタムループを使用するのは悪い考えです。問題は、WordPressが常に(メインループを設定するために)あなたに代わって問い合わせを行い、URLからpaged
パラメータを受け取ることです。あなたが作者のアーカイブにいるとしましょう。デフォルトのposts_per_page
は10です。この投稿者は40投稿しています。カスタムループでは、1ページに5件の投稿しか表示されません。あなたが今5ページ目にいる場合、WordPressはあなたのカスタムループでするように21-25の代わりに41-50の投稿を問い合わせます。 WordPressは投稿を見つけず、あなたの404.php
テンプレートの代わりにauthor.php
テンプレートをロードします。
このため、カスタムループを実行せず、pre_get_posts
または別のフックを使用してデフォルトのループにフックすることをお勧めします。