質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1390閲覧

category.phpの2ページ目以降で404エラーが出る

kaz.m

総合スコア1

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/06/22 08:34

編集2022/06/23 01:27

実現したいこと

category.phpの記事一覧で
ページネーションを入れて表示制限をかけたいのですが、
2ページ目以降でエラーが出てしまいます。
archive.phpでは機能してるのですが、
category.phpだけエラーが出てしまうようです・・・。

もしご存知の方がいらっしゃいましたら、
改善策等ご教示いただけましたら幸いです。

よろしくお願い致します。

該当のソースコード

category.php

1 <section class="section"> 2 <div class="inner"> 3 <div class="switchGroup"> 4 <?php 5 $categories = get_categories(); 6 foreach ($categories as $category){ 7 echo '<div class="switchWrap"><a class="switch" href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></div>'; 8 } 9 ?> 10 </div> 11 <ul class="list"> 12 <?php 13 // $category_slug = get_query_var("category_name"); 14 $args = array( 15 "post_type" => "news", 16 "posts_per_page" => 3, 17 // "category_name" => $category_slug, 18 "paged" => $paged 19 ); 20 $the_query = new WP_Query($args); 21 if($the_query -> have_posts()): 22 while($the_query -> have_posts()): 23 $the_query -> the_post(); 24 ?> 25 <li class="item"> 26 <a class="anchor" href="<?php the_permalink(); ?>"> 27 <div class="dateWrap"><span class="date"><?php the_time("Y.m.d"); ?></span><span class="category"><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?></span></div> 28 <h3 class="title"><?php the_title(); ?></h3> 29 <div class="textWrap"><?php echo wp_trim_words( get_the_content(), 72, "..."); ?></div> 30 </a> 31 </li> 32 <?php 33 endwhile; 34 endif; 35 wp_reset_postdata(); 36 ?> 37 </ul> 38 <?php if(function_exists("the_pagination")) the_pagination(); ?> 39 </div> 40 </section>

functions.php

1// ページネーション 2function the_pagination(){ 3 global $the_query; 4 $bignum = 999999999; 5 if ($the_query->max_num_pages <= 1) { 6 return; 7 } 8 echo paginate_links(array( 9 'base' => str_replace($bignum, '%#%', esc_url(get_pagenum_link($bignum))), 10 'format' => '', 11 'current' => max(1, get_query_var('paged')), 12 'total' => $the_query->max_num_pages, 13 'prev_text' => '', 14 'next_text' => '', 15 'type' => 'list', 16 'end_size' => 0, 17 'mid_size' => 1 18 )); 19 wp_reset_postdata(); 20}

試したこと

  • パーマリンクの設定を変更してみたのですが特に変化はありませんでした。(現在、「投稿名」に設定しています。また、カテゴリーベースは空白にしてます)
  • プラグイン「FV Top Level Categories」「WP No Category Base (WPML)」を入れても変化ありませんでした。

補足情報(FW/ツールのバージョンなど)

php 7.4.21
wordpress 6.0
1ページに表示する最大投稿数(管理画面): 1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

初心者あるあるですね。

一覧ページに記事があるかはメインクエリで判定されます、
記事がなければ404になります。

一覧ページのループをサブクエリで書いていると、
メインクエリとサブクエリで検索結果が違ってしまい、
有効なページ数も違ってしまいます。

一覧ページの表示件数を変えたりしたい場合は、
有効なページ数が食い違ったりしないように、
サブクエリは使わずにparse_queryのフィルタフック等で
メインクエリのクエリ変数を書き換えるようにしましょう。

投稿2022/06/23 12:04

KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz.m

2022/07/11 01:25

お返事遅くなってしまってすみません! おかげさまで無事に解決できました! ご教示いただきありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問