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

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

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

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Q&A

解決済

1回答

2240閲覧

固定ページでのページネーションが表示できない。wordpress

tenlife

総合スコア70

WordPress

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

0グッド

0クリップ

投稿2020/08/07 23:51

固定ページでページネーションを表示させようとしていますがうまく実装出来ません。

やりたい事: 固定ページでページネーションを表示させる事です。

現状: functions.phpに設定してある関数は呼び出せているが(echoで確認しました)、表示がされないといった状態です。
ですがindex.phpだと表示されます。

参考にしているサイト
https://www.webdesignleaves.com/pr/wp/wp_func_pager.htmll#h5_index_16

url

1固定ページのurlです 2http://hogehoge/?page_id=21 3 4index.phpで表示出来る時(2をクリックした時) 5http://hogehoge/?paged=2 6 7なので固定ページurlは以下のようになるのではと予想しています。 8http://hogehoge/?page_id=21/?paged=2

view

1    <?php if(have_posts()) :?> 2 $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; 3 pagination( array( 4 'mid_size' => 1, 5 'prev_text' => '<i class="fas fa-chevron-left mr-2"></i>PREV', 6 'next_text' => 'NEXT<i class="fas fa-chevron-right ml-2"></i>', 7      'paged' => $paged, 8 )); ?> 9 <?php endif; ?>

functions

1function pagination( $args = array() ) { 2 3 $navigation = ''; 4 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 5 $query = new WP_Query($arg); 6 // 1ページのみの場合は出力しない 7 if ( $query->max_num_pages > 1 ) { 8 9 $args = wp_parse_args( 10 $args, 11 array( 12 'mid_size' => 1, 13 'prev_text' => _x( 'Previous', 'previous set of posts' ), 14 'next_text' => _x( 'Next', 'next set of posts' ), 15 'screen_reader_text' => __( 'Posts navigation' ), 16 'type' => 'list', //リストとしてマークアップ 17 ) 18 ); 19 20 // type に list 以外が指定されていたら list に強制 21 $args['type'] = 'list'; 22 23 // paginate_links() を使ってリンクを生成 24 $links = paginate_links( $args ); 25 26 if ( $links ) { 27 28 $patterns = array( 29 '#<li><a class=([\'\"]([^\'\"]*)[\'\"]) ([^>]*>[^<]*)</a></li>#', 30 '#<li><span class=([\'\"]([^\'\"]*)[\'\"])\s?([^>]*>[^<]*)</span></li>#', 31 '#<li><span (aria-current=[\'\"]([^\'\"]*)[\'\"]) class=([\'\"]([^\'\"]*)[\'\"])\s?([^>]*>[^<]*)</span></li>#', 32 ); 33 34 $replacements = array( 35 '<li class="page-item"><a class="$2 page-link" $3</a></li>', 36 '<li class="page-item disabled"><span class="$2 page-link" $3</span></li>', 37 '<li class="page-item active"><span $1 class="$4 page-link" $5</span><span class="sr-only">(現在のページ)</span></li>', 38 ); 39 40 ksort($patterns); 41 ksort($replacements); 42 $links = preg_replace($patterns, $replacements, $links); 43 44 //_navigation_markup() は使わずに nav 要素でマークアップ 45 $navigation = ' 46 <nav class="navigation %s" role="navigation" aria-label="%s"> 47 <div class="nav-links">%s</div> 48 </nav>'; 49 //nav 要素の aria-label の値には screen_reader_text の値を設定 50 $navigation = sprintf( $navigation, 'pagination', esc_html( $args['screen_reader_text'] ), $links ); 51 } 52 } 53 echo $navigation; 54 }

調べてみると$pagedがしっかり設定されていないと出来ないです、みたいな事が出てきたので色々試してみましたが、変わらずでした。
調べたサイト
https://takasuke.net/wordpress/pagination/
https://qiita.com/kymtgt/items/9eb90764ebc060fac297
https://shogo-log.com/setup-pagenation/
https://elearn.jp/wpman/function/paginate_links.html

初めての作業なので、理解が浅い部分があるかと思います。

どなたか詳しい方がいらっしゃいましたら、ご教授いただきたいです。
よろしくお願いいたします。

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

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

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

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

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

CHERRY

2020/08/08 04:53

少なくても URL は、 http://hogehoge/?page_id=21&paged=2 のように複数のパラメーターは & でつなぎますが、出力されているURL は、どうなっているのでしょうか。
tenlife

2020/08/08 20:58

コメントありがとうございます! やはりそのような形になるのですね。 ページネーションを表示させたい固定ページでは、まずページネーション自体が表示されないのでurlは作成されていません。 ただしページネーションを表示出来るindex.phpだとurlは以下のようになっています。 http://hogehoge/?paged=2
CHERRY

2020/08/09 10:55

WordPress のパーマリンクの設定は何にしていますか?
tenlife

2020/08/09 12:18

返信ありがとうございます。 現在設定は基本になっています。以下のようなリンクです。 http://hogehoge/?p=123
guest

回答1

0

ベストアンサー

paginate_linksのtotalは指定がなければメインクエリのmax_num_pagesが使われます
そしてtotalが2未満であればpaginate_linksは何も出力しません

固定ページのメインクエリのmax_num_pagesは1です
なのでtotalが指定されなければpaginate_linksは何も出力しません

'total'

(int) The total amount of pages. Default is the value WP_Query's max_num_pages or 1.

php

1 $args['total']=$query->max_num_pages;

などのようにして$query->max_num_pagesをtotalとして与えてください

投稿2020/08/10 10:53

KazuhiroHatano

総合スコア7819

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

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

tenlife

2020/08/10 22:07

回答ありがとうございます! 提示された書き方を試したところ上手く表示されるようになりました。 詳しい説明もありがとうございます。非常に勉強になります。 現在は2ページ目に転移した時に中身の表示が1ページ目と同じになってしまいます。 次はこれに取り組んでいきます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問