質問編集履歴
5
書式の改善
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -10,21 +10,21 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
             省略ページを以下の倍数で表示 5
         
     | 
| 
       11 
11 
     | 
    
         
             
            これで25ページ目を表示させると、以下の通り。
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            先頭«...5...21 22 23 24 25 26 27 28 29 30...40...»最終
         
     | 
| 
      
 13 
     | 
    
         
            +
            先頭«...5...21 22 23 24 **25** 26 27 28 29 30...40...»最終
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
             「40」は現25ページ目から15ページ先になります。これを10ページ先への「35」にしたい。また、遡る方では「5」は先頭1ページ目から次の5の倍数であって、「21」から遡って20, 15, 10と表示されるわけではない。これは10ページ前への「15」にしたい。
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            「省略ページを以下の倍数で表示」を「1」に設定すると、以下。
         
     | 
| 
       18 
     | 
    
         
            -
            先頭«...1...21 22 23 24 25 26 27 28 29 30...36...»最終
         
     | 
| 
      
 18 
     | 
    
         
            +
            先頭«...1...21 22 23 24 **25** 26 27 28 29 30...36...»最終
         
     | 
| 
       19 
19 
     | 
    
         
             
            「36」は11ページ先だし、「1」は「先頭」と重複するので論外。
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
             条件分岐としては、10ページ前へのリンクは現在表示中のページが20ページ目以降の場合に表示され、2~19ページ目では表示されないことが望ましい。
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
             表示中のページの10ページ先・後へのページ・ナビゲーションが難しい場合は次善として、以下の通り10の倍数をそれぞれ「先頭」「最終」の横に表示させるのでもいい。
         
     | 
| 
       24 
24 
     | 
    
         
             
             ↓24ページ目を表示中
         
     | 
| 
       25 
     | 
    
         
            -
            先頭«...10...20 21 22 23 24 25 26 27 28 29...30...»最終
         
     | 
| 
      
 25 
     | 
    
         
            +
            先頭«...10...20 21 22 23 **24** 25 26 27 28 29...30...»最終
         
     | 
| 
       26 
26 
     | 
    
         
             
             ↓39ページ目を表示中
         
     | 
| 
       27 
     | 
    
         
            -
            先頭«...30...35 36 37 38 39 40 41 42 43 44...50...»最終
         
     | 
| 
      
 27 
     | 
    
         
            +
            先頭«...30...35 36 37 38 **39** 40 41 42 43 44...50...»最終
         
     | 
| 
       28 
28 
     | 
    
         
             
            (18-12-29追記:10の倍数を前後に表示させるだけなら、 プラグイン「Simplistic page navi」で可能でした。「[ページネーション(ページャー)を作り直してプラグイン](http://strix.main.jp/?diys=wp-pager-remake)」にコードの紹介あり。但しWP-PageNaviと違って「表示するページ数」を10にすることができません、「現在のページに隣接したページ番号を表示させる個数」が左右対称なので。)
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
             プラグインでなくphpプログラムで実現しても結構ですが、the_posts_pagination関数やpaginate_links関数のパラメーター一覧を見た限りでは、手立てが見つかりませんでした。
         
     | 
4
10の倍数で表示させる場合Simplistic page naviが利用できること
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -25,6 +25,7 @@ 
     | 
|
| 
       25 
25 
     | 
    
         
             
            先頭«...10...20 21 22 23 24 25 26 27 28 29...30...»最終
         
     | 
| 
       26 
26 
     | 
    
         
             
             ↓39ページ目を表示中
         
     | 
| 
       27 
27 
     | 
    
         
             
            先頭«...30...35 36 37 38 39 40 41 42 43 44...50...»最終
         
     | 
| 
      
 28 
     | 
    
         
            +
            (18-12-29追記:10の倍数を前後に表示させるだけなら、 プラグイン「Simplistic page navi」で可能でした。「[ページネーション(ページャー)を作り直してプラグイン](http://strix.main.jp/?diys=wp-pager-remake)」にコードの紹介あり。但しWP-PageNaviと違って「表示するページ数」を10にすることができません、「現在のページに隣接したページ番号を表示させる個数」が左右対称なので。)
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
             プラグインでなくphpプログラムで実現しても結構ですが、the_posts_pagination関数やpaginate_links関数のパラメーター一覧を見た限りでは、手立てが見つかりませんでした。
         
     | 
| 
       30 
31 
     | 
    
         
             
            [WordPressでページャーを出力する関数 the_posts_pagination の使い方](https://kaminarimagazine.com/web/2017/02/22/wordpress%E3%81%A7%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0-the_posts_pagination-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/)
         
     | 
3
引用範囲のミスを修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -34,11 +34,11 @@ 
     | 
|
| 
       34 
34 
     | 
    
         
             
            [PHPで10ページ毎のページネーション](https://www.kabanoki.net/266)
         
     | 
| 
       35 
35 
     | 
    
         
             
            > 動作としては、
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
            1 2 3 4 5 6 7 8 9 10  >
         
     | 
| 
      
 37 
     | 
    
         
            +
            > 1 2 3 4 5 6 7 8 9 10  >
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            という形に表示され、「>」をクリックした時に次の10ページグループが表示されます。
         
     | 
| 
      
 39 
     | 
    
         
            +
            > という形に表示され、「>」をクリックした時に次の10ページグループが表示されます。
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
            <  11 12 13 14 15 16 17 18 19 20  >
         
     | 
| 
      
 41 
     | 
    
         
            +
            > <  11 12 13 14 15 16 17 18 19 20  >
         
     | 
| 
       42 
42 
     | 
    
         
             
            ```php
         
     | 
| 
       43 
43 
     | 
    
         
             
            page = isset($_GET['id']) ? $_GET['id'] : 1;
         
     | 
| 
       44 
44 
     | 
    
         
             
            // データ数
         
     | 
2
グループ化する方法の発見
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -29,6 +29,57 @@ 
     | 
|
| 
       29 
29 
     | 
    
         
             
             プラグインでなくphpプログラムで実現しても結構ですが、the_posts_pagination関数やpaginate_links関数のパラメーター一覧を見た限りでは、手立てが見つかりませんでした。
         
     | 
| 
       30 
30 
     | 
    
         
             
            [WordPressでページャーを出力する関数 the_posts_pagination の使い方](https://kaminarimagazine.com/web/2017/02/22/wordpress%E3%81%A7%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0-the_posts_pagination-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/)
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
            ####追記
         
     | 
| 
      
 33 
     | 
    
         
            +
             いまウェブ検索のキーワードを「wordpress "10ページ毎" ページネーション」にしてみたら、次のページがヒットしました。
         
     | 
| 
      
 34 
     | 
    
         
            +
            [PHPで10ページ毎のページネーション](https://www.kabanoki.net/266)
         
     | 
| 
      
 35 
     | 
    
         
            +
            > 動作としては、
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            1 2 3 4 5 6 7 8 9 10  >
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            という形に表示され、「>」をクリックした時に次の10ページグループが表示されます。
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            <  11 12 13 14 15 16 17 18 19 20  >
         
     | 
| 
      
 42 
     | 
    
         
            +
            ```php
         
     | 
| 
      
 43 
     | 
    
         
            +
            page = isset($_GET['id']) ? $_GET['id'] : 1;
         
     | 
| 
      
 44 
     | 
    
         
            +
            // データ数
         
     | 
| 
      
 45 
     | 
    
         
            +
            $cnt = 275;
         
     | 
| 
      
 46 
     | 
    
         
            +
            // 1ページの表示件数
         
     | 
| 
      
 47 
     | 
    
         
            +
            $preview_item_num = 10;
         
     | 
| 
      
 48 
     | 
    
         
            +
              
         
     | 
| 
      
 49 
     | 
    
         
            +
            // 最大ページ数
         
     | 
| 
      
 50 
     | 
    
         
            +
            $max_page = ceil($cnt/$preview_item_num);
         
     | 
| 
      
 51 
     | 
    
         
            +
            // 次グループの先頭ページ
         
     | 
| 
      
 52 
     | 
    
         
            +
            $prove_group = (ceil( $page/10 )) * 10 + 1 ;
         
     | 
| 
      
 53 
     | 
    
         
            +
            // 現在のページグループ
         
     | 
| 
      
 54 
     | 
    
         
            +
            $group = (ceil( $page/10 ) - 1);
         
     | 
| 
      
 55 
     | 
    
         
            +
            // 二桁の値
         
     | 
| 
      
 56 
     | 
    
         
            +
            $select = $group * 10;
         
     | 
| 
      
 57 
     | 
    
         
            +
            // 差分
         
     | 
| 
      
 58 
     | 
    
         
            +
            $sabun = $cnt - 100 * $group;
         
     | 
| 
      
 59 
     | 
    
         
            +
            // 前ページの先頭ページ
         
     | 
| 
      
 60 
     | 
    
         
            +
            $prove = $prove_group - 20;
         
     | 
| 
      
 61 
     | 
    
         
            +
            // 手抜きで差分が100以上だったら100にする
         
     | 
| 
      
 62 
     | 
    
         
            +
            if($sabun > $preview_item_num * 10) $sabun = $preview_item_num * 10;
         
     | 
| 
      
 63 
     | 
    
         
            +
              
         
     | 
| 
      
 64 
     | 
    
         
            +
            // 過剰ページにアクセスがあったら非表示
         
     | 
| 
      
 65 
     | 
    
         
            +
            if( $page > 0 || $max_page >= $page )
         
     | 
| 
      
 66 
     | 
    
         
            +
            {
         
     | 
| 
      
 67 
     | 
    
         
            +
            // 10ページ以上だったら、前ページ移動のリンクを表示
         
     | 
| 
      
 68 
     | 
    
         
            +
            if( $page > 10 ) echo sprintf('<a href="?id=%s">前へ</a>', $prove);
         
     | 
| 
      
 69 
     | 
    
         
            +
              
         
     | 
| 
      
 70 
     | 
    
         
            +
            for( $s=1+$select; $s<= ceil($sabun/$preview_item_num)+$select; $s++? )
         
     | 
| 
      
 71 
     | 
    
         
            +
            {
         
     | 
| 
      
 72 
     | 
    
         
            +
            // 現在ページ以外のページにリンクを貼る
         
     | 
| 
      
 73 
     | 
    
         
            +
            if( $page == $s ) echo ' '.$s;
         
     | 
| 
      
 74 
     | 
    
         
            +
            else echo sprintf(' <a href="?id=%1$s">%1$s</a>', $s);
         
     | 
| 
      
 75 
     | 
    
         
            +
            }
         
     | 
| 
      
 76 
     | 
    
         
            +
            // 次のページグループが存在したら表示
         
     | 
| 
      
 77 
     | 
    
         
            +
             if( $max_page >= $prove_group? ) echo sprintf(' <a href="?id=%s">後ろへ</a>', $prove_group);
         
     | 
| 
      
 78 
     | 
    
         
            +
            }
         
     | 
| 
      
 79 
     | 
    
         
            +
            ```
         
     | 
| 
      
 80 
     | 
    
         
            +
             ううん、思った形とは異なるけど、10ページごとの移動をする同等の機能としてならこの例みたいなグループ化もありか。但しこれの両端に、「先頭」「最終」へのリンクも附けたい。
         
     | 
| 
      
 81 
     | 
    
         
            +
             このソースをWordpressのページネーションに組み込むにはどうするのがよいのか、改造方法を御教示下さると、助かります。
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       32 
83 
     | 
    
         
             
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
| 
       33 
84 
     | 
    
         
             
            Wordpress バージョン 5.0.1–ja
         
     | 
| 
       34 
85 
     | 
    
         
             
            テーマはtwentysixteen(の子テーマ)
         
     | 
1
次善の希望として、10の倍数のみの場合
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -20,7 +20,13 @@ 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
             条件分岐としては、10ページ前へのリンクは現在表示中のページが20ページ目以降の場合に表示され、2~19ページ目では表示されないことが望ましい。
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
             表示中のページの10ページ先・後へのページ・ナビゲーションが難しい場合は次善として、以下の通り10の倍数をそれぞれ「先頭」「最終」の横に表示させるのでもいい。
         
     | 
| 
      
 24 
     | 
    
         
            +
             ↓24ページ目を表示中
         
     | 
| 
      
 25 
     | 
    
         
            +
            先頭«...10...20 21 22 23 24 25 26 27 28 29...30...»最終
         
     | 
| 
      
 26 
     | 
    
         
            +
             ↓39ページ目を表示中
         
     | 
| 
      
 27 
     | 
    
         
            +
            先頭«...30...35 36 37 38 39 40 41 42 43 44...50...»最終
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       23 
     | 
    
         
            -
             プラグインでなくphpプログラムで実現しても結構 
     | 
| 
      
 29 
     | 
    
         
            +
             プラグインでなくphpプログラムで実現しても結構ですが、the_posts_pagination関数やpaginate_links関数のパラメーター一覧を見た限りでは、手立てが見つかりませんでした。
         
     | 
| 
       24 
30 
     | 
    
         
             
            [WordPressでページャーを出力する関数 the_posts_pagination の使い方](https://kaminarimagazine.com/web/2017/02/22/wordpress%E3%81%A7%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0-the_posts_pagination-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/)
         
     | 
| 
       25 
31 
     | 
    
         | 
| 
       26 
32 
     | 
    
         
             
            ### 補足情報(FW/ツールのバージョンなど)
         
     |