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

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

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

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

PHP

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

Q&A

解決済

1回答

2629閲覧

Wordpress 一覧ページのページャーについて。

yuki1010

総合スコア43

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/08/19 03:51

wordpressの一覧のページのページャー機能について質問があります。
現在functions.phpに独自関数を作ってページャーを実装しています。コードは

php

1//bootstrapペイジャー 2function bootstrap_pagination() 3{ 4 global $wp_query; 5 $paged = $wp_query->get( 'paged' ); 6 $posts_per_page = get_option('posts_per_page'); 7 if ( ( ! $paged || $paged < 2 ) && $wp_query->found_posts < $posts_per_page ) 8 return; 9 //最大表示するページャの数 10 11 $range = 2; 12 $showitems = ($range * 2)+1; 13 14 global $paged; 15 if(empty($paged)) $paged = 1; 16 17 if($pages == '') 18 { 19 global $wp_query; 20 $pages = $wp_query->max_num_pages; 21 if(!$pages) 22 { 23 $pages = 1; 24 } 25 } 26 27 if(1 != $pages) 28 { 29 echo '<ul class="pagination">'; 30 if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link(1)."'>&laquo;</a></li>"; 31 if($paged > 1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a></li>"; 32 33 for ($i=1; $i <= $pages; $i++) 34 { 35 if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) 36 { 37 echo ($paged == $i)? "<li class='active'><span class='current'>".$i."</span></li>":"<li><a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a></li>"; 38 } 39 } 40 41 if ($paged < $pages && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a></li>"; 42 if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<li><a href='".get_pagenum_link($pages)."'>&raquo;</a></li>"; 43 echo "</ul>\n"; 44 } 45}

問題点
常にページャーの番号の数を5つに揃えたいと思っています。
現在の設定だと、全部で6ページ分あった場合、
1ページ目では1と2と3が表示されます。
2ページ目では1と2と3と4が表示されます。
3ページ目では1と2と3と4と5が表示されます。
これを常に5つに揃えたいのですが、どこのコードをいじればよいのでしょうか?
ページャー1
ページャー2
ページャー3

私としては

php

1 if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) 2 { 3 echo ($paged == $i)? "<li class='active'><span class='current'>".$i."</span></li>":"<li><a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a></li>"; 4 }

の条件を変更すればいいのでは??と思っています。どなたかお助けください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じかなぁ。ずれる場合は上手く調整してください。

PHP

1// 未テスト 2$range_before = $range; 3$range_after = $range; 4 5$bbb = $range + 1 - $paged; 6if ( $bbb > 0 ) { 7// $range_after += $fff; // typeミスを修正 8 $range_after += $bbb; // 現在ページより前が詰まっている場合後ろに足す 9} 10$aaa = $pages - $paged 11if ( $aaa < $range ) { 12 $range_before += $range - $aaa; // 後ろが詰まっている場合前に足す 13} 14 15if ( !( $i > $paged+$range_after || $i < $paged-$range_before ) || $pages <= $showitems ) { /* 略 */ } 16// 未テスト

投稿2016/08/19 17:25

編集2016/08/20 03:10
kei344

総合スコア69400

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

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

yuki1010

2016/08/20 03:06

ご返答ありがとうございます。 質問があります。 $range_after += $fff; での$fffは$bbbの間違いでしょうか?
kei344

2016/08/20 03:09

> $fffは$bbbの間違いでしょうか? あ、すいません。間違いです。回答も後で修正しておきます。
yuki1010

2016/08/20 14:13

ありがとうございます。しっかりと思った通りに動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問