未来工藝社_ブログ

WordPressでページ送り(ページネーション)がうまくいかないときquery_postsとwp_queryどちらを使っても解決したまとめ2014。
2014-09-17 AM01:35

最新バージョン4.0のWordpressでページ送りをすると
2ページ目以降が404になったり、1ページ目と同じになったり
以前はうまくいっていたのに、うまくいかなくなてしまった時の対処法です。

相変わらず嫌われ者コードのquery_postsが問題を引き起こしていることが多いらしい

しかしでござるquery_postsでも2ページ以降もうまくいったど― (^^)/
ってことでwp_queryも含め自分なりのやり方を備忘録として載せておきますね。

参考にさせてもらったのは以下サイト
http://notnil-creative.com/blog/archives/1996

記入個所はすごいシンプル!!
今回はカテゴリページで最新記事一覧を表示したいcategory.phpの編集方法です。

まずは、query_postsを使うやりかたです!


ページネーションも含めcategory.phpに最新記事4件を表示したい箇所に
以下を記入

<?php // 表示件数を4件に設定 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // category_nameを追加してblogカテゴリの記事のみを表示するようにする $args = array('posts_per_page' =--> 4, 'paged' => $paged, 'category_name' => 'blog' );
query_posts($args); ?>
<!-- ループ -->
<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
<!-- ループの中身 -->
<?php get_template_part('blog');?>

<?php endwhile; ?>
<!-- ページ送り(プラグインのWP SiteManagerのテンプレタグ) -->
<?php if ( class_exists( 'WP_SiteManager_page_navi' ) ) { WP_SiteManager_page_navi::page_navi(); } ?>
<?php else : ?>
<!-- 投稿がなかった時 -->
<?php endif; ?>

そんでもってwp_queryを使う方法


<?php
//blogカテゴリIDが2の場合で最新4件表示したいとき
$args = array(
  'cat' => 2,
  'posts_per_page' => 4
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
  while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<!-- ループの中身 -->
<?php get_template_part('blog');?>

<?php endwhile; ?>
<!-- ページ送り(プラグインのWP SiteManagerのテンプレタグ) -->
<?php if ( class_exists( 'WP_SiteManager_page_navi' ) ) { WP_SiteManager_page_navi::page_navi(); } ?>
<?php else : ?>
<!-- 投稿がなかった時 -->
<?php endif; ?>

ページネーションはプラグインのWP SiteManagerを使用してます。
このページのようにうまくいきました。

それでもうまくいかないとき試してほしい2つのこと

パーマリンク設定をカテゴリペースの「/%category%/~」にしている場合
効果てきめんなのは、ずばりTop Level Categories Fixプラグインをインストールして有効化するだけ!!
(念のためダッシュボード設定→パーマリンク設定→変更を保存ボタンをクリックしてくださいね。)

ちなみにこのTop Level Categories Fixプラグインは
「WP Page Numbers」も「WP SiteManager」も正常に動作しました。

もう一つの方法は、ダッシュボード設定→表示設定で
「1ページに表示する最大投稿数」を1にして
‘posts_per_page’で表示件数を設定する方法です。
これも意外に解決する場合が多いです。


でもでもうまくいかないとき試してほしい1つのこと

とりあえず寝よう(*⌒∇⌒*)
みんな疲労コンパイ限界よろしくだと思います。
朝になればしょうもないスペルミスだったりすることもあるし
時間をおいてみるのもいいかも!!