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

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

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

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

PHP

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

Q&A

1回答

725閲覧

【Wordpress】tag.phpでページャーがうまく動かない

omori3

総合スコア274

WordPress

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

PHP

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

0グッド

1クリップ

投稿2018/11/20 21:17

編集2022/01/12 10:55

前提・実現したいこと

Wordpressでブログを構築しています。
現在、tag.php(タグテンプレート)とauthor.php(投稿者テンプレート)の2テンプレート内で、
10件記事を出力させていて、それ以上の場合はページャーで/page/2に飛ばそうでしてるところでつまづいてます。

ぞれぞれURLは以下のような形式です。
http://example.com/tag/タグ名
http://example.com/tag/タグ名/page/2 (404エラー)

http://example.com/p/author/投稿者名
http://example.com/p/author/投稿者名/page/2 (404エラー)

どうかご教授願います。

発生している問題・エラーメッセージ

ページャーのボタン等は生成される、URLも出力されているのですが、クリックすると404という状態です。
また/page/1/としても404になるので、そもそもページ分割(ページャーシステム)がうまく作動してない感じのようです。

該当のソースコード

php

1<?php 2// ループ 3$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 4 $tag_id = $wp_query->query_vars['tag_id']; 5 $args = array( 6 'tag_id' => $tag_id, 7 'posts_per_page' => 10, 8 'paged' => $paged, 9 'orderby' => 'post_date', 10 'order' => 'DESC', 11 'post_type' => 'post', 12 'post_status' => 'publish' 13 ); 14 $the_query = new WP_Query($args); 15 if($the_query->have_posts()) : 16 while($the_query->have_posts()) : $the_query->the_post(); 17 ?> 18// 19// 20// ループ内の処理 21// 22// 23 <?php endwhile; endif; ?> 24 25 26 27// ページャー 28<?php 29if ($the_query->max_num_pages > 1) { 30 echo paginate_links(array( 31 'base' => get_pagenum_link(1) . '%_%', 32 'format' => 'page/%#%', 33 'current' => max(1, $paged), 34 'total' => $the_query->max_num_pages 35 )); 36} 37?> 38<?php wp_reset_postdata(); ?>

試したこと

ダッシュボード内「1ページに表示する最大投稿数」は1にしてあります。

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

トップページやカテゴリーページはページャー動いています、、

11/23 18:47更新
$paged、$the_query->max_num_pages等は取得できてるようです。
htts://url.com/tag/tagslug/page/1にすらも404になってします。
htts://url.com/tag/tagslug/では一ページ目に該当する表示ができてます。

本来ならpage/1も一ページ目の表示が普通に見れるはずと認識しております。
つまり/page/を使ったそもそものところに不具合があるのかなと思います。(上記の通り$paged等は取得できているので)

11/23 21:16更新
なんとなく答えに近づいて来た気がしました。
functions.phpにカテゴリーページの/category/スラッグを消すため、以下の記述をしていた模様です。
このリライトルールがtag.php等に影響を及ぼしているような気がします。
これから調査しますが、何かわかる方は教えてください。よろしくお願いします。

functions.php

1add_filter('user_trailingslashit', 'remcat_function'); 2function remcat_function($link) { 3 return str_replace("/category/", "/", $link); 4} 5add_action('init', 'remcat_flush_rules'); 6function remcat_flush_rules() { 7 global $wp_rewrite; 8 $wp_rewrite->flush_rules(); 9} 10add_filter('generate_rewrite_rules', 'remcat_rewrite'); 11function remcat_rewrite($wp_rewrite) { 12 $new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); 13 $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; 14}

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

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

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

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

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

guest

回答1

0

とりあえず、

<?php php endwhile; endif; ?> ```は ```ここに言語を入力 <?php endwhile; endif; ?>
  'format' => 'page/%#%', ```この部分に全角が含まれています。 それらを直せば動くのではないでしょうか。 参考まで。 追記 --- 固定ページですと書かれているコードでも動いたのですが、tag.phpだとおっしゃっるとおりエラーになりました。なので、 ```ここに言語を入力 if ($the_query->max_num_pages > 1) {

の前に

global $the_query;

でどうでしょう。

ちなみに修正後のコードもタイポされてますよ。

'current' => max(1, $paged), /*カンマがとれてます*/

投稿2018/11/21 02:21

編集2018/11/22 01:49
8-0_nyan5

総合スコア2352

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

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

omori3

2018/11/21 16:04

8-0_nyan5さん、ご回答ありがとうございます。 まさかと思ったのですが、今回teratail初投稿でして、コードの大事な部分だけ切り取ってるうちにこちらのみおかしくなっていた模様で、コードの方はphp被りと全角は大丈夫でした。大変失礼しました。 未だ解決しないので何か他に気づき、もしくはアドバイス等ありましたらぜひよろしくお願いいたします。
omori3

2018/11/23 03:10

8-0_nyan5さん、引き続き、ご回答ありがとうございます。 変わらず、404でした。 タイポすいません、直しておきます。 色々試して行く中で、別の環境(別のwordpressサイト)にこのtag.phpを置いてみたら、ページャー動いてました、、(global $the_query使っても使わなくてもいけました。)本家は何がいけないのでしょうか パーマリンク設定では カスタム投稿で /p/%postname% オプション、タグベースで tag を設定しています。 引き続き何か気づく点がありましたらよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問