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

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

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

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

PHP

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

Q&A

解決済

2回答

6111閲覧

CPT UIを使ったカスタム投稿のアーカイブページでページャーを付けたが404になる為、正常に動作するように修正したい。

itchy_0528

総合スコア9

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/12/11 06:33

まず、やりたいことは普通の投稿ページのアーカイブ と カスタム投稿で作成したニュースのアーカイブと、カタログのアーカイブ
それぞれに表示件数が5件でページャーの表示です。

【現状】
CPT UIというプラグインを利用して、newsとcatalogという2つのカスタム投稿を作成しています。
例えば、newsの場合archive-news.phpをテンプレートとして、固定ページで選択して表示する形で作っています。
(タイトルやディスクリプションなどを固定ページで編集したいため)
また、CPT UIで作成したスラッグもnewsで固定ページのURLもnewsです。

いろいろ検索して、数々の方法を試したのですが、2ページ目をクリックすると404になります。

URLは、
http://〇〇.com/news/ 
2ページ目は
http://〇〇.com/news/page/2/

という感じですが、404になります。

同じURLだとうまく動かないという情報もあったので、
固定ページの方のURLをnews-archiveに変更したりしましたが、同じでした。

カスタム投稿のパーマリンクは以下です。

http://〇〇.com/news/%post_id%/
http://〇〇.com/catalog/%post_id%/

試したタグの一例はこちらです。

php

1 2<?php 3/** 4* ページネーションHTML出力 5* 6* $limit ページあたりの表示上限数 7* $post_typed 投稿タイプのスラッグ 8*/ 9function pagenation($limit = 5, $post_typed = 'news') { 10 global $wp_rewrite; 11 global $paged; 12 global $wp_query; 13 14 // 検索条件 15 $query = array(); 16 if ($limit != 5) { 17 $query['posts_per_page'] = $limit; 18 } 19 if (count($query) != 0) { 20 $wp_query->query($query); 21 } 22 23 $wp_query->query(array( 24 'post_type' => $post_typed, 25 )); 26 $paginate_base = get_pagenum_link(); 27 28 if( strpos( $paginate_base, '?' ) || !$wp_rewrite->using_permalinks() ) { 29 $paginate_format = ''; 30 $paginate_base = add_query_arg( 'paged', '%#%' ); 31 } else { 32 $paginate_format = (substr( $paginate_base, -1, 1 ) == '/' ? '' : '/') . user_trailingslashit('page/%#%/','paged'); 33 $paginate_base .= '%_%'; 34 } 35 36 37 if( $paged < 2 ) { 38 $paged = 1; 39 } 40 $args = array( 41 'base' => $paginate_base, 42 'format' => $paginate_format, 43 'total' => $wp_query->max_num_pages, 44 'current' => $paged, 45 'show_all' => false, 46 'prev_next' => true, 47 'prev_text' => '&laquo;', 48 'next_text' => '&raquo;', 49 'type' => 'array', 50 ); 51 $pagenate_array = paginate_links($args); 52 53 // 配列がある場合のみ 54 if (is_array($pagenate_array) == TRUE) { 55 $pagenate .= '<div class="wp-pagenavi">'; 56 foreach ($pagenate_array as $key => $value) { 57 58 if (preg_match('/current/', $value) == TRUE) { 59 $class = ''; 60 } 61 else { 62 $class = ''; 63 } 64 65 // $value = "<span class=\"{$class}\">".$value.'</span>'; 66 // リンク追加 67 $pagenate .= $value; 68 } 69 70 $pagenate .= '</div>'; 71 echo $pagenate; 72 } 73} 74?>

そして、news-archive.phpに呼び出し用のタグ

php

1<?php 2pagenation($posts_per_page, 'news'); 3?>

こちらを入れました。
ページャー自体は表示されますが、404になります。

https://qiita.com/itsumoonazicode/items/a62c8d59696b65c61d2f
をそのまま利用させてもらいました。

他にもググって出てきた色々な方法を試しては見ているのですが、
すべて同じ動作になってしまいます。

知識不足で、参考から変更しなければいけないところができていない等、
初歩的なミスかもしれませんが、お助け頂けると
ありがたいです。

宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

回答依頼を頂いたので、以下ご確認ください。

設定→表示設定→1ページに表示する最大投稿数は何件になっていますか?
ページネーションの5件より多ければ、WPが生成しようとしたページより多くなり
上手くいかない原因になるようです。

別案として、強制リダイレクトを停止するのに、functions.phpに以下のように
追記されるとどうでしょう?(ご利用テンプレートに応じて適宜ご修正ください)

php

1add_filter('redirect_canonical','my_disable_redirect_canonical'); 2 3function my_disable_redirect_canonical( $redirect_url ) { 4 if ( is_single( 'news' ) || is_single('catalog') ) 5 $redirect_url = false; 6 return $redirect_url; 7}

投稿2019/12/12 01:56

madone99

総合スコア1855

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

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

itchy_0528

2019/12/12 04:24

madone99さん 回答依頼にこたえていただきありがとうございます! 頂いたソースからヒントを得てリダイレクトを止める事で、 ?paged=2が表示され、2ページ目を表示することができました! いつもありがとうございます!
madone99

2019/12/12 04:33

解決されたようでよかったです。
guest

0

投稿2019/12/11 06:51

KazuhiroHatano

総合スコア7802

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

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

itchy_0528

2019/12/11 07:04

KazuhiroHatanoさん 回答ありがとうございます。 わかりづらくて申し訳ございません。 archiveはtrueにしていてアーカイブページ自体は、あるのですが、 ページャーだけうまく動作しない状態です。
KazuhiroHatano

2019/12/11 07:28

「設定>パーマリンク設定」でパーマリンクの更新はしましたか?
itchy_0528

2019/12/11 07:39

KazuhiroHatanoさん 回答ありがとうございます。 更新はしています! 各アーカイブページはあり、5件表示されていて フッターの上にページャーが < 1 2 > このような形で表示されています。 ニュースには7件投稿しているので、ページャーの2をクリックすれば 残りの2つが見れるようになるイメージなのですが、 404になります。 http://〇〇.com/news/page/2/ このページが無い状態です。
KazuhiroHatano

2019/12/11 07:49

http://〇〇.com/news/?paged=2でも404ですか?
itchy_0528

2019/12/11 08:10

?paged=2を直打ちでやってみましたが、page/2/ にリダイレクトされ404となりました。
KazuhiroHatano

2019/12/11 09:20

それでダメなら検索結果投稿が見つからないということなのでしょうね var_dump($GLOBALS['wp']);とか var_dump($GLOBALS['wp_query']);とかしてみると 少し問題がわかるかもしれません 今のところ疑わしいのはposts_per_pageが 意図した値になっていないのではないかというところですかね
itchy_0528

2019/12/11 09:50

沢山のご回答ありがとうございます! 素人すぎてデバック等もやったことないですが、 自分でも色々と調べてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問