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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1155閲覧

【WordPress】ページネーションで表示されるページ数を常に4個に固定したい

hrdyuic

総合スコア5

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/05/31 07:31

編集2022/06/01 21:35

現在、下記サイトを参考にページネーションを実装していますが苦戦しております。
[WordPressでページネーションをつくる方法と仕組みの解説]https://since-inc.jp/blog/8506

【前提・実現したいこと】※2022年6月2日にコードの修正を行い以下の状態になっております。
下記のソースコードでは、全5ページの場合
1ページ目にいると「前へ 1 2 3 4 次へ」
2ページ目にいると「前へ 2 3 4 5 次へ」
3ページ目にいると「前へ 3 4 5 次へ」
4ページ目にいると「前へ 4 5 次へ」
5ページ目にいると「前へ 5 次へ」
となります。

1ページ目のときに「前へ 1 2 3 4 次へ」

最終ページのときに「前へ 7 8 9 10 次へ」

という風に表示されるページ数を常に4個に固定するにはどのようにすれば良いでしょうか?

また、1ページ目の時には「前へ」を 、最終ページの時には「次へ」をクリックできないようにしたいです。

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

【ソースコード】

function pagenation($pages = '', $range = 2){ $showitems = ($range * 1) + 1; global $paged; if(empty($paged)) $paged = 1; if($pages == ''){ global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages){ $pages = 1; } } if(1 != $pages){ // 画像を使う時用に、テーマのパスを取得 $img_pass = get_template_directory_uri(); echo "<div class=\"m-pagenation\">"; // 「1/2」表示 現在のページ数 / 総ページ数 // echo "<div class=\"m-pagenation__result\">". $paged."/". $pages."</div>"; // 「前へ」を表示 if($paged >= 1) echo "<div class=\"m-pagenation__prev\"><a href='".get_pagenum_link($paged - 1)."'>前へ</a></div>"; // ページ番号を出力 echo "<ol class=\"m-pagenation__body\">\n"; for ($i=1; $i <= $pages; $i++){ if (1 != $pages &&( !($i >= $paged+$range+2 || $i <= $paged-$range+1) || $pages <= $showitems )){ echo ($paged == $i)? "<li class=\"-current\">".$i."</li>": // 現在のページの数字はリンク無し "<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>"; } } // [...] 表示 // if(($paged + 4 ) < $pages){ // echo "<li class=\"notNumbering\">...</li>"; // echo "<li><a href='".get_pagenum_link($pages)."'>".$pages."</a></li>"; // } echo "</ol>\n"; // 「次へ」を表示 if($paged <= $pages) echo "<div class=\"m-pagenation__next\"><a href='".get_pagenum_link($paged + 1)."'>次へ</a></div>"; echo "</div>\n"; } }

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

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

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

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

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

CHERRY

2022/05/31 09:02

現在のページは、数字の何番目に表示することを考えていますか?
hrdyuic

2022/05/31 09:22

回答ありがとうございます。 現在のページを、 「前へ 1 2 3 4 次へ」 「前へ 2 3 4 5 次へ」 「前へ 3 4 5 6 次へ」 という様に常に「前へ」の次に表示させたいと考えております。
guest

回答1

0

ベストアンサー

リンク先を読むと

$rangeと$showitemsを変えることで、「1 2 3」の表示を「1 2 3 4 5」と言ったように表示する数を変更できます。

という記述がありましたが、もう変更してみましたか?

追記
echo "<ol class=\"m-pagenation__body\">\n";
の中が条件式なのでそこを変更しないとですね。

php

1if($i == $paged){ 2 echo "<li class=\"-current\">".$i."</li>"; // 現在のページの数字はリンク無し 3}elseif($i > $paged && $i < $paged + $range){ 4 echo "<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>"; 5}

みたいな感じでしょうか。

投稿2022/05/31 07:53

編集2022/06/02 09:21
recal

総合スコア1126

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

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

hrdyuic

2022/05/31 08:12

回答ありがとうございます。 はい。変更してみました。 「$range = 2」の数字を何度か変更してみたのですが思った実装にはなりませんでした。
recal

2022/05/31 10:09

どうゆう変化がありましたか?規則性全く無しなわけは無いと思うのですが。
hrdyuic

2022/05/31 12:37

内容が不十分で申し訳ありません。 「$range = 0」の場合では、 ページを読み込んだ時点では、「1 次へ」となっています。 「次へ」をクリックすると「前へ 2 次へ」 「次へ」をクリックすると「前へ 3 次へ」 「次へ」をクリックすると「前へ 4 次へ」 「次へ」をクリックすると「前へ 5」 「$range = 1」の場合では、 ページを読み込んだ時点では、「1 2 次へ」となっています。 「2」をクリックすると「前へ 1 2 3 次へ」 「3」をクリックすると「前へ 2 3 4 次へ」 「4」をクリックすると「前へ 3 4 5 次へ」 「5」をクリックすると「前へ 4 5」 「$range = 3」の場合では、 ページを読み込んだ時点では、「1 2 3 4 次へ」となっています。 「2」をクリックすると「前へ 1 2 3 4 5 次へ」 「3」をクリックすると「前へ 1 2 3 4 5 次へ」 「4」をクリックすると「前へ 1 2 3 4 5 次へ」 「5」をクリックすると「前へ 2 3 4 5」 「$range = 4」の場合では、 ページを読み込んだ時点では、「1 2 3 4 5 次へ」となっています。 「2」をクリックすると「前へ 1 2 3 4 5 次へ」 「3」をクリックすると「前へ 1 2 3 4 5 次へ」 「4」をクリックすると「前へ 1 2 3 4 5 次へ」 「5」をクリックすると「前へ 1 2 3 4 5」 以上のようになります。 よろしくお願い致します。
hrdyuic

2022/06/02 13:08

回答をありがとうございます。 教えて頂いたコードを書いた所、 1ページ目では、「前へ 1 2 3 4 次へ」 2ページ目では、「前へ 2 3 4 5 次へ」 3ページ目では、「前へ 3 4 5 次へ」 4ページ目では、「前へ 4 5 次へ」 5ページ目では、「前へ 5 次へ」 となりました。 5ページ目までしか記事がないのでこのような動きになると思うのですが、ページ数を常に4個に固定とはいきませんでした。
recal

2022/06/03 00:26

質問の追記のコメント欄で >現在のページを、 「前へ 1 2 3 4 次へ」 「前へ 2 3 4 5 次へ」 「前へ 3 4 5 6 次へ」 という様に常に「前へ」の次に表示させたいと考えております。 とかいてありますよね。
recal

2022/06/03 00:27

"常に「前へ」の次"になってませんか?
hrdyuic

2022/06/03 01:07

おっしゃる通りです。 常に前への次に表示させたいと書いており、教えて頂いたコードを書くことでそのようになりました。 これだと総ページ数の兼ね合いで表示させるページ数の数が変わってくるってことですよね。 すみません。僕の思考不足でした。 考えを改めて、以下が僕の実現したいことになります。 総ページ数が5ページだとして、○で囲った数字が現在位置だとすると、 「前へ ① 2 3 4 次へ」 「前へ ② 3 4 5 次へ」 「前へ 2 ③ 4 5 次へ」 「前へ 2 3 ④ 5 次へ」 「前へ 2 3 4 ⑤ 次へ」 それと①と最終ページにいる時に「前へ」と「次へ」をクリックできないようにしたいです。 実現したいことが変わってしまい申し訳ございませんがよろしくお願い致します。
recal

2022/06/03 01:25 編集

ここって欲しいコードを書いてもらえる場じゃないと思うので どうなると思ってどんなコードを書いて、どううまく行かなかったまでのソースコードを用意するべきではないでしょうか。 なので、よろしくお願いしますの意味がわかりません。 知恵袋に行けば全部書いてくれる人が沢山いそうですよ。
hrdyuic

2022/06/03 01:53

分かりました。 僕の思考不足で実現したことは変わってしまいましたが、質問当初の実現したいことは昨日のコードで叶いましたのでベストアンサーとさせて頂きます。 数日間に渡り教えて頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問