Title: category.phpでのページ送りができません
Last modified: 2013年6月30日

---

# category.phpでのページ送りができません

 *  解決済 [mfreeman59](https://ja.wordpress.org/support/users/mfreeman59/)
 * (@mfreeman59)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/)
 * category.phpでWP_PageNaviを使ってページ送りを実装しようとしていますが、2ページ
   目以降に遷移しようとすると、404になってしまいます。
    調べたところ、get_query_var(‘
   paged’); がページ番号を取得出来ておらず、$pagedが空になってしまっているようで
   した。 どうして取得出来ないのか、わかりません。
 * 他のページでカスタム投稿を使っているところがあるのですが、そこではget_query_var(‘
   paged’)を使うまでもなく、global $paged;だけで事足りています。
 * 以下、category.phpのソース（一部抜粋）です。
 *     ```
       <section class="blog02">
       		<h3>Category：<?php single_cat_title(); ?></h3>
   
       		<?php
       		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
       		global $cat;
       		$cat_info = get_category($cat);
   
       		$wp_query = new WP_Query(
       			array(
       				'post_type' => 'post',
       				'category_name' => $cat_info->slug,
       				'posts_per_page' => 1,
       				'paged' => 2
       				)
       			);
       		if(have_posts()):
       		while($wp_query->have_posts()): $wp_query->the_post();
       		?>
   
       		<div class="post">
   
       		<h3><?php var_dump(2); ?></h3>
   
       		<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
   
       		<ul class="postMeta">
       			<li class="postedDate">Posted on <time><?php the_time('Y/m/d'); ?></time><span class="new"><?php newPost(); ?></span></li>
       			<li class="category">Category：<?php the_category('•'); ?></li>
       		</ul>
   
       		<article><?php the_excerpt(); ?></article>
   
       		</div>
   
       		<?php
       		endwhile;;
       		else: ?>
       		<h4>記事はありません。</h4>
       		<article>
       			<p>お探しの記事は見つかりませんでした。</p>
       		</article>
       		<?php endif; ?>
   
       	<?php wp_pagenavi(array('query' => $wp_query)); ?>
   
       	</section>
       ```
   
 * $wp_queryの配列の’paged’のところに数字を入れると、該当ページが開くのですが、他の
   ページ番号に移ろうとしても404になってしまう、ような状態です。
 * アドバイス、よろしくお願いします。

7件の返信を表示中 - 1 - 7件目 (全7件中)

 *  [Takuro Hishikawa](https://ja.wordpress.org/support/users/hissy/)
 * (@hissy)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162791)
 * テンプレートで $wp_query を上書きして条件を変更しても、テンプレートが読み込ま
   れるタイミングではすでにクエリーが評価されたあとですので、上書きする前の条件で
   404であれば404の表示になります。メインクエリーの改変を行いたいのであれば、pre_get_posts
   フィルターを使いましょう。
 *  トピック投稿者 [mfreeman59](https://ja.wordpress.org/support/users/mfreeman59/)
 * (@mfreeman59)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162797)
 * ご回答ありがとうございます！
    早速category.phpの$wp_queryを以下のように書き、
 *     ```
       $wp_query = new WP_Query(
       	array(
       		'post_type' => 'post',
       		'category_name' => $cat_info->slug,
       		'posts_per_page' => 1,
       		'paged' => $paged
       		)
       	);
       ```
   
 * functions.phpには以下のものを書き足してみました。
 *     ```
       function lowerPagination($query) {
           $paged = (get_query_var('paged') ? get_query_var('paged') : 1 );
       }
       add_action('pre_get_posts', 'lowerPagination');
       ```
   
 * これで、ページ番号は取得出来るようになったのですが、不可解な事に、2ページ目まで
   は表示されるのに、3ページ目以降は404になるという状態になっています。
    archive.
   phpでも同じように書いてみたら、今度は4ページ目以降で404になるという現象が起き
   ています。
 * これはどういうことなんでしょうか・・・？
 *  [gatespace](https://ja.wordpress.org/support/users/gatespace/)
 * (@gatespace)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162798)
 * mfreeman59さんが カテゴリーアーカイブ （category.php） を改変しようとしている
   事は何なのでしょう？
 * 改変しなくても、post_type、category_name、は自動で反映されています。
    単純に１
   ページに表示される投稿の件数のみを、ダッシュボードの表示設定と異なるようにした
   い、という事なのでしょうか？
 *  トピック投稿者 [mfreeman59](https://ja.wordpress.org/support/users/mfreeman59/)
 * (@mfreeman59)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162799)
 * 目的は、「category.phpとarchive.phpでページ送りをしたときに404を出さない」こと
   です。
 * 今までの経緯は、
    ①$pagedにページ番号が入ってこず、空になってしまう。 　→pre_get_posts
   に上記の$pagedの設定を書いたところ、解決。 ②$pagedは機能しているのに、3ページ
   目や4ページ目でなぜか404になってしまう。←イマココ
 * という感じです。
 *  [gatespace](https://ja.wordpress.org/support/users/gatespace/)
 * (@gatespace)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162800)
 * > 目的は、「category.phpとarchive.phpでページ送りをしたときに404を出さない」こと
   > です。
 * であれば、**new WP_Query とか pre_get_posts のことはいったん忘れて**
    archive.
   php、category.phpにWP_PageNaviを入れて正常に動作することを確認してみてはどうで
   しょう？ デフォルトテーマと見比べて欲しいのですが、どちらも
 *     ```
       <?php
       if ( have_posts() ) :
           while ( have_posts() ) : the_post();
               // 投稿のループ
           endwhile;
           // このあたりにページ送り
       else :
           // 投稿が無い場合
       endif;
       ?>
       ```
   
 * という流れです。
 * まずはページ送りがきちんと動くかどうかを確認し、必要に応じてクエリの改変を行う
   のが良いと思います。
 *  [Takuro Hishikawa](https://ja.wordpress.org/support/users/hissy/)
 * (@hissy)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162801)
 * 確かに。WP_Queryはいったん忘れてもらったほうがよさそうですね。無くてもカテゴリー
   アーカイブは機能しますから。
 *  トピック投稿者 [mfreeman59](https://ja.wordpress.org/support/users/mfreeman59/)
 * (@mfreeman59)
 * [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162802)
 * wp_queryとpre_get_postsの設定をきって、ダッシュボードの表示設定から指定したら
   うまくいきました！
    ここの表示投稿数の指定も、wp_queryを書かずにpre_get_posts
   の指定だけ書いたらうまくいきました。万事OKです。
 * hissyさん、gatespaceさん、的確なアドバイスをどうもありがとうございました！

7件の返信を表示中 - 1 - 7件目 (全7件中)

 トピック「category.phpでのページ送りができません」には新たに返信することはできま
せん。

## タグ

 * [ページ送り](https://ja.wordpress.org/support/topic-tag/%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a/)
 * [category.php](https://ja.wordpress.org/support/topic-tag/category-php/)
 * [get_query_var('paged')](https://ja.wordpress.org/support/topic-tag/get_query_varpaged/)
 * [paged](https://ja.wordpress.org/support/topic-tag/paged/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 7件の返信
 * 3人の参加者
 * 最後の返信者: [mfreeman59](https://ja.wordpress.org/support/users/mfreeman59/)
 * 最後の活動: [13年、 3ヶ月前](https://ja.wordpress.org/support/topic/categoryphp%e3%81%a7%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8%e9%80%81%e3%82%8a%e3%81%8c%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93/#post-162802)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
