現在、wordpressにてブログを作っております。
トップページに記事一覧を表示、サイドバーにカテゴリーを配置し、各カテゴリーを押すとそのカテゴリーの記事一覧が表示されるように設定しております。
ここまでは実装出来たのですが、なぜかカテゴリー一覧でのページ送りが機能いたしません。
※トップページではページ送りは機能しております。
コードに間違いがあるのでしょうか?
原因がわからず困っております。
皆様のお力いただけると幸いです。
下記、
カテゴリーページ(category.php)のコードになります。
<?php get_header(); ?> <!--CONTENTS--> <div id="contents"> <!--MAIN--> <div class="main" id="archive"> <h2><?php the_category(' // ') ?>の記事一覧</h2> <?php foreach((get_the_category()) as $cat) { $catid = $cat->cat_ID ; break ; } $get_posts_parm = "'numberposts=&category=" . $catid . "'"; ?> <div class="cont"> <?php $posts = get_posts($get_posts_parm); ?> <?php foreach($posts as $post): ?> <ul class="content2"> <a href="<?php the_permalink() ?>"> <li class="img"><?php the_post_thumbnail('thumbnail'); ?></li> <li class="title"><?php if(mb_strlen($post->post_title)>25) { $title= mb_substr($post->post_title,0,25) ; echo $title. ・・・ ;} else {echo $post->post_title;}?></li> <li class="cat"><?php the_category(', ') ?></li> <li class="date"><?php the_time('Y年m月j日') ?></li> <li class="text"><?php $text= mb_substr(strip_tags($post-> post_content), 0, 80); echo $text. '...'; ?></li></a> <a href="<?php the_permalink() ?>"><li class="read">続きを読む▶</li></a> </ul> <?php endforeach; ?> </div> <?php wp_pagenavi(); ?> <div class="readall"> <a href="<?php echo home_url(); ?>"><p>すべての記事を見る</p></a> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
コメント(6件)
>||
ここにソースコード
||<
後、以下のようなことを書くと、回答が付きやすいと思います。
・テーマに何を使ってるか
・自分で Wordpress のコードをカスタマイズしてるか、そのまま使ってるか
ご指摘ありがとうございます。
コード貼らせていただきました。
・テーマは自作のオリジナルテーマを使っております。
・なのでコードはページごとに自分でカスタムして使っている状態です。
どうぞよろしくお願い致します。
PHP とか Wordpress とか、ソースは読めるけど、苦手なのですよ(それなりに、回答はしてますが)。
「今、どのページを見てるよ」ってのを、クエリのパラメータに指定してあげる必要があるんじゃないかな、という気がします。
http://stackoverflow.com/questions/8228632/wordpress-pagenavi-plugin-doesnt-work-on-category-php
ぼくなんかよりも、きちんと Wordpress のことを分かってる人に、リクエストしておきます。
> トップページに記事一覧を表示、サイドバーにカテゴリーを配置し、各カテゴリーを押すとそのカテゴリーの記事一覧が表示されるように設定しております。
各カテゴリーのリンクをクリックすると、クリックしたカテゴリーアーカイブのページにアクセスして記事一覧を表示するようになっているのですか?
コードの以下の部分で、「the_category()」で特定の記事に関連づけたカテゴリーをリンクつきで見出しに表示し、foreachループ内で「get_the_category()」で取得したカテゴリーの一番最初のカテゴリーのIDを取得して「get_posts()」で使用するパラメータに設定していますが、これは何の為にこのような記述にしているのでしょう?
カテゴリーアーカイブ等の各種ページは、URL判定によりそのままでも適切なページが表示される仕組みになっています。
カテゴリーアーカイブの場合は、アクセスしたカテゴリー内の記事一覧を表示します。
以下のコードのままでは、アーカイブの先頭に表示される記事によっては、アクセスした目的のカテゴリーとは違うカテゴリーが設定されてしまう問題が発生する場合もあると思います。
/************************************************************/
<h2><?php the_category(' // ') ?>の記事一覧</h2>
<?php
foreach((get_the_category()) as $cat) {
$catid = $cat->cat_ID ;
break ;
}
$get_posts_parm = "'numberposts=&category=" . $catid . "'";
?>
/************************************************************/
特に必要がなければ、メインループをそのまま利用してみてください。
※WordPressデフォルトのテーマが参考になります。(基本的にすべて以下のループを利用します。)
/************************************************************/
<?php if ( have_posts() ) : ?>
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
// ここにサムネイル画像、記事タイトル等、記事表示の記述
endwhile;
wp_pagenavi();
endif;
?>
/************************************************************/
※「get_posts()」では「wp_pagenavi()」によるページネーションは表示できないと思いました。
a-kuma3さんが紹介したQ&Aにもありますが、別のループを用意する必要がある場合は、プラグインの共同(?)作者さんページにあるように「WP_Query」を使うといいようです。
http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html
※2つ目のコードの「The new way (better, because it has less side-effects):」を参考にしてください。
ご親切に参考サイトいただきありがとうございました。
またrouge_2008さまを紹介していただきありがとうございます。
無事、rouge_2008の指摘どおり修正させていただきましたら、思うとおりに動くようになりました!
この度はありがとうございました!
ご指摘いただきありがとうございます。
>カテゴリーアーカイブ等の各種ページは、URL判定によりそのままでも適切なページが表示される仕組みになっています。
カテゴリーアーカイブの場合は、アクセスしたカテゴリー内の記事一覧を表示します。
こちらの部分どうやら難しく考えすぎていたようです。
ご指摘いただいたとおり、単純にメインループを利用したところ、思うとおりに動くようになりました!
この度はありがとうございました!
また何かありましたらどうぞよろしくお願い致します!