下記コードです。
<?php query_posts('posts_per_page=10&paged='.$paged);
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php endwhile; endif; ?>
<?php wp_pagenavi(); ?>
<?php wp_reset_query(); ?>
ちなみにパーマリンクの設定は、/%category%/%postname%/のようにしております。
カテゴリ関連のプラグインは使用しておりません。
どなたか宜しくお願い致します。
クエリを発行する前に、現在のページを取得して変数にセットしているでしょうか?
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('posts_per_page=10&paged=' . $paged);
http://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query
※メインクエリ変更の目的が、カテゴリアーカイブでの表示件数変更だけなのでしたら、「pre_get_posts」を使って次のようにしてもいいと思います。(※「query_posts()」は使用しません。)
・「functions.php」
function category_archive_request( $query ) { if ( $query->is_category() && $query->is_main_query() ) { $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $query->set( 'posts_per_page', '10' ); $query->set( 'paged', $paged ); } } add_action( 'pre_get_posts', 'category_archive_request' );
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts
【追記】
今回の件とは関係ありませんが、「endwhile;」と「endif;」の間に記述した方がいいと思います。
<?php endwhile; wp_pagenavi(); endif; ?>
※この「endif;」は「if (have_posts()) :」に対応しているので、この行より前に記述して記事がある場合のみ呼び出した方がいいです。
クエリを発行する前に、現在のページを取得して変数にセットしているでしょうか?
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('posts_per_page=10&paged=' . $paged);
http://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query
※メインクエリ変更の目的が、カテゴリアーカイブでの表示件数変更だけなのでしたら、「pre_get_posts」を使って次のようにしてもいいと思います。(※「query_posts()」は使用しません。)
・「functions.php」
function category_archive_request( $query ) { if ( $query->is_category() && $query->is_main_query() ) { $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $query->set( 'posts_per_page', '10' ); $query->set( 'paged', $paged ); } } add_action( 'pre_get_posts', 'category_archive_request' );
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts
【追記】
今回の件とは関係ありませんが、「endwhile;」と「endif;」の間に記述した方がいいと思います。
<?php endwhile; wp_pagenavi(); endif; ?>
※この「endif;」は「if (have_posts()) :」に対応しているので、この行より前に記述して記事がある場合のみ呼び出した方がいいです。
無理なカスタマイズをしようとしているようです。
「single.php」は個別投稿ページを表示する為のテンプレートファイルです。
追加変更したループが2つあり、1つ目のループで本来そのページで表示される記事と同一カテゴリーの記事タイトルとリンクを16件表示し、さらに2つ目のループで表示件数のみ10件に変更している(※カテゴリー等はリセットされる)ので、省略した(?)記事タイトルとリンク表示のコードを追加すれば、インデックス(※トップ)ページと同様の記事が10件分表示されると思います。
この2つ目のクエリー内でWP-pagenaviのナビゲーションを表示していますが、2つ目のループの2ページ目を表示したいのでしょうか?
やりたい事は「同一カテゴリのページ送りをしたい」という事でしたが、2つ目のループはカテゴリーがリセットされたクエリーになっているので、取得される記事は同一カテゴリーに限定されていません。
また、個別投稿ページですから2ページ目は存在しませんし、デフォルトの状態では「/page/?/」をつけてアクセスしてもページ指定が無効な状態でアクセスした個別投稿ページが表示されます。
※「<!--nextpage-->」で改ページしている投稿の2ページ目以降でページナビゲーションのリンクをクリックした場合、URLはそのままで「/?(※ページ分割のページ指定)/page/??/」がついたままとなりますが、投稿が見つからない状態になります。
かなりカスタマイズすれば可能なのかもしれませんが、デフォルトで上記のような状態ですので、別の部分に不具合が発生する可能性もありますし、現状でこのようなカスタマイズを行っている(または知っている)人は少ないのではないかと思います。
表示件数以上の関連記事を紹介したい場合は、WordPressにはデフォルトでカテゴリーアーカイブが用意されていますので、カテゴリーアーカイブへのリンクを表示するだけにしてはいかがでしょう?
「wp_pagenavi();」の代わりに次のコードを記入すれば、カテゴリーアーカイブへのリンクが表示されます。(2つ目のクエリー変更とループの記述は必要ないように思いますが、何を表示する為に追加したのでしょう?)
// $cat_idは前の方でカテゴリー取得時に代入した物を使いまわします。 <?php $category_link = get_category_link( $cat_id ); ?> <!-- ※リンクテキストは任意で変更してください。※ --> <a href="<?php echo $category_link; ?>">関連記事をもっと見る</a>
・get_category_link
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_category_link
※カテゴリーアーカイブは「category.php」で表示されます。
「category.php」がない場合は「index.php」を利用して表示しますが、インデックス(※トップ)ページと違う表示にしたい場合は、「category.php」を作成して利用するようにしてください。(自動でアクセスしたカテゴリーを判別して表示するので、クエリーを変更する必要はありません。通常のループの記述で表示されます。)
rouge_2008様、教えて下さった通りcategory.phpに表示するように致しました!おかげさまで無事に設置する事ができました。丁寧に教えて下さり、本当に本当にありがとうございました!
はい!記述しております!こちらでは何故か表示されないようです!
何度もすみません(><)
query_posts('posts_per_page=10&paged=' . $paged);
if (have_posts()) :
while (have_posts()) : the_post(); ?>
endwhile;
wp_pagenavi();
endif;
?>
無理なカスタマイズをしようとしているようです。
「single.php」は個別投稿ページを表示する為のテンプレートファイルです。
追加変更したループが2つあり、1つ目のループで本来そのページで表示される記事と同一カテゴリーの記事タイトルとリンクを16件表示し、さらに2つ目のループで表示件数のみ10件に変更している(※カテゴリー等はリセットされる)ので、省略した(?)記事タイトルとリンク表示のコードを追加すれば、インデックス(※トップ)ページと同様の記事が10件分表示されると思います。
この2つ目のクエリー内でWP-pagenaviのナビゲーションを表示していますが、2つ目のループの2ページ目を表示したいのでしょうか?
やりたい事は「同一カテゴリのページ送りをしたい」という事でしたが、2つ目のループはカテゴリーがリセットされたクエリーになっているので、取得される記事は同一カテゴリーに限定されていません。
また、個別投稿ページですから2ページ目は存在しませんし、デフォルトの状態では「/page/?/」をつけてアクセスしてもページ指定が無効な状態でアクセスした個別投稿ページが表示されます。
※「<!--nextpage-->」で改ページしている投稿の2ページ目以降でページナビゲーションのリンクをクリックした場合、URLはそのままで「/?(※ページ分割のページ指定)/page/??/」がついたままとなりますが、投稿が見つからない状態になります。
かなりカスタマイズすれば可能なのかもしれませんが、デフォルトで上記のような状態ですので、別の部分に不具合が発生する可能性もありますし、現状でこのようなカスタマイズを行っている(または知っている)人は少ないのではないかと思います。
表示件数以上の関連記事を紹介したい場合は、WordPressにはデフォルトでカテゴリーアーカイブが用意されていますので、カテゴリーアーカイブへのリンクを表示するだけにしてはいかがでしょう?
「wp_pagenavi();」の代わりに次のコードを記入すれば、カテゴリーアーカイブへのリンクが表示されます。(2つ目のクエリー変更とループの記述は必要ないように思いますが、何を表示する為に追加したのでしょう?)
・get_category_link
2013/11/19 22:46:04http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_category_link
※カテゴリーアーカイブは「category.php」で表示されます。
「category.php」がない場合は「index.php」を利用して表示しますが、インデックス(※トップ)ページと違う表示にしたい場合は、「category.php」を作成して利用するようにしてください。(自動でアクセスしたカテゴリーを判別して表示するので、クエリーを変更する必要はありません。通常のループの記述で表示されます。)
rouge_2008様、教えて下さった通りcategory.phpに表示するように致しました!おかげさまで無事に設置する事ができました。丁寧に教えて下さり、本当に本当にありがとうございました!
2013/11/22 08:31:04