【WordPress】WP-Pagenaviプラグインを使った時の覚書

電脳備忘録

愚痴のようなまえおき

archive.phpにページ送りを実装しないといけなかったので対応したのですが、ちょっと嵌ったのでメモを残しておこうと思います。
嵌ったのは2ページ目をクリックすると404.phpに飛ばされるという不具合です。

結局のとこと、Wordpressの1ページに表示する最大投稿数の設定と、posts_per_pageを埋め込む場所がまずかったためエラーを吐いていました。
難しい方向に考えて、urlをリライトしないといけないのかなぁなんて考えましたが、私の場合はそういうわけではありませんでした。
それに気が付くまでに結構な時間を有しましたよ...。

以下メモ

<?php if (have_posts()) : ?>の前に<?php query_posts($query_string . '&posts_per_page=10'); ?>を書いて表示件数を設定する。
posts_per_pageの値を適宜変更する。
Wordpressの[表示設定]-[ページに表示する最大投稿数の設定]は1件にしておく

後は表示させたいところに下記のコードを埋め込む

<?php if(function_exists('wp_pagenavi')): ?>
<?php wp_pagenavi(); ?>
<?php endif; ?>

こんな感じです。これで意図したとおりに動いています。
taxonomy名の箇所はカスタムタクソノミの値で抽出する必要があったので、そのように記述しています。

<?php query_posts($query_string . '&posts_per_page=10'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php
$args = array(
'orderby' => 'slug',
'order' =>'ASC'
);
$terms = wp_get_post_terms( get_the_ID(), 'taxonomy名',$args );
if ( !empty($terms) ) : if ( !is_wp_error($terms) ) :
foreach( $terms as $term ) :
?>
<h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<hr />
<?php endforeach; ?>
<?php endif; endif; ?>
</div>
<?php endwhile; ?>
<?php if(function_exists('wp_pagenavi')): ?>
<?php wp_pagenavi(); ?>
<?php endif; ?>
<?php else : ?>
<p>該当する記事はありません</p>
<?php endif; ?>

広告

ブログの維持費に充てるでございます・・・。