投稿の一覧ページでページャーが2ページ目に遷移しない
archive.phpで投稿一覧ページを作っているのですが、カテゴリ別アーカイブとタグアーカイブでページャーが2ページ目以降に遷移しない現象が発生し、解決できずにいます。
以下コードとこれまでの行った対応策について記述します。
ページャーは篤志で譲っていただいたものでコード自体を出すことができないのですが、
こちらにあるものとほぼ同じ、プラグインを使用していないものを設置しています。
ページャー例
ちなみにWP-pagenaviというプラグインも試しましたが、現象に改善は見られませんでした。
①【archive.phpのソース】
のところはページャーが正常に動いています。
<?php if(stristr($uri,'archive')): ?><!-- この個所はページャーが動く -->
<div id="conts" class="heightLine">
<section>
<h2 class="ttl01"> "archive"</h2>
<p class="lead">All articles.</p>
<section id="archive">
<h3 class="ttl02">Articles
"</h3>
<section class="articlesList">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 10,
'paged' => $paged
);
elseif(stristr($uri,'others')):
include (TEMPLATEPATH.'/archive-others.php');
elseif(stristr($uri,'tag')):
include (TEMPLATEPATH.'/archive-tag.php');
endif;
$the_query = new WP_Query($args);
if($the_query->have_posts()):
while($the_query->have_posts()):
$the_query->the_post();
?>
<div class="article">
<time><?php the_time('Y.m.d'); ?></time>
<p class="articleTtl"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
</div>
<?php endwhile; endif; ?>
</section>
</section>
<?php include (TEMPLATEPATH.'/pagenavi.php'); ?>
</section>
</div><!-- /#conts -->
【インクルードファイルの記述】
② この個所はページャーがうまく動いていません。
<!-- archive-tag.php -->
<?php
$tag_slug = mb_substr($uri,5,-1,'utf-8');
$tags = get_tags();
foreach ($tags as $tag):
if(preg_match($tag->slug,$tag_slug)):
$tag_slug = $tag->slug;
endif;
endforeach;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'tag' => $tag_slug,
'posts_per_page' => 10,
'paged' => $paged
);
$the_query = new WP_Query($args);
$currTags = get_the_tags();
foreach($currTags as $currTag):
if($currTag->slug == $tag_slug):
$tag_name = $currTag->name;
endif;
endforeach;
?>
<div id="conts" class="heightLine">
<section>
<h2 class="ttl01">"tag:<?php echo $tag_name; ?>"</h2>
<p class="lead">Articles about tag:<?php echo $tag_name; ?>.</p>
<section id="archive">
<h3 class="ttl02">Articles of "tag:<?php echo $tag_name; ?>"</h3>
<section class="articlesList">
<?php
③この箇所で取得した情報一覧ページでもページャーはうまく動きません。
<!-- archive-other.php -->
<div id="conts" class="heightLine">
<section>
<h2 class="ttl01">OTHER</h2>
<p class="lead">Articles about OTHER.</p>
<section id="archive">
<h3 class="ttl02">Articles of "OTHER"</h3>
<section class="articlesList">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'html',
'posts_per_page' => 10,
'paged' => $paged
);
④行ってみた改善策
・表示設定で「1ページに表示する最大投稿数」を1件にする
・1ページあたりの表示件数をWP_Queryで指定(コード参照)
・ページャーの1ページ目を指定する(コード参照)
・リライトルールの再設定で改善されることもあるようなのですが、私が試した範囲では改善はしませんでした(リライトに関する私の知識が浅く、また方法も多様なようなので、適切な対応ができていないように思います)。
このほか検索等で類似した策は大体やってみました。
解決しない状態で結構な時が過ぎてしまったため、皆様のお力を借りようと思った次第です。
何かお気づきの方がいらっしゃいましたらコメントいただけたらと思います。
2015/8/12
こちらですが、なんとか自己解決しましたので解決方法を記しておきます。
原因は使用しているプラグインでした。
パーマリンクを/%category%/%post_id%/と設定していました。
"WP No Category Base"というプラグインを使用し、カテゴリアーカイブのパーマリンクから”category”を除いていましたが、これをオフにします。
このままだとパーマリンクから”category”を除けないので、類似機能を持つ”Top Level Categories”というプラグインを使用します。
このプラグインにはバグが有り、このままではカテゴリアーカイブでページャーがうまく機能しないそうなので、”Top Level Categories Fix”をインストール、アクティブにします。
これで本件は解決しました。
同じような現象が発生している方がいらっしゃったらお試し下さい。