回答編集履歴
5
コード変更
    
        answer	
    CHANGED
    
    | 
         @@ -30,7 +30,7 @@ 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            ---
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
            追記3
         
     | 
| 
      
 33 
     | 
    
         
            +
            追記3(2018/12/31変更)
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
            動作未検証です。
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
         @@ -40,49 +40,53 @@ 
     | 
|
| 
       40 
40 
     | 
    
         
             
            $pages = $wp_query->max_num_pages;
         
     | 
| 
       41 
41 
     | 
    
         
             
            $paged = get_query_var("paged") ?: 1;
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            teratail_paginatio( 
     | 
| 
      
 43 
     | 
    
         
            +
            teratail_paginatio($pages, $paged,10);
         
     | 
| 
       44 
44 
     | 
    
         
             
            ```
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
            ```PHP
         
     | 
| 
       47 
     | 
    
         
            -
            /**
         
     | 
| 
      
 46 
     | 
    
         
            +
            ```PHP/**
         
     | 
| 
       48 
47 
     | 
    
         
             
            * ページネーション出力関数
         
     | 
| 
       49 
48 
     | 
    
         
             
            * $pages : 全ページ数
         
     | 
| 
       50 
49 
     | 
    
         
             
            * $paged : 現在のページ
         
     | 
| 
       51 
     | 
    
         
            -
            * $range :  
     | 
| 
      
 50 
     | 
    
         
            +
            * $range : 何ページ表示するか
         
     | 
| 
       52 
51 
     | 
    
         
             
            */
         
     | 
| 
       53 
52 
     | 
    
         
             
            function teratail_pagination($pages, $paged, $range) {
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
                
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
                // 1頁のみ
         
     | 
| 
       56 
55 
     | 
    
         
             
                if ( $pages === 1 ) return;
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
                
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
      
 57 
     | 
    
         
            +
                // 複数頁
         
     | 
| 
       59 
58 
     | 
    
         
             
                if ( 1 !== $pages ) {
         
     | 
| 
      
 59 
     | 
    
         
            +
                    
         
     | 
| 
      
 60 
     | 
    
         
            +
                    $range = $range - 1;
         
     | 
| 
      
 61 
     | 
    
         
            +
                    $range1 = floor($range/2);
         
     | 
| 
      
 62 
     | 
    
         
            +
                    $range2 = ceil($range/2);
         
     | 
| 
      
 63 
     | 
    
         
            +
                    
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
      
 64 
     | 
    
         
            +
                    if( !((($paged-$range1) <= 1) && (1 <= ($paged+$range2))) )
         
     | 
| 
       61 
65 
     | 
    
         
             
                        echo '<a href="', get_pagenum_link(1) ,'">', "先頭" ,'</a> ';
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
      
 66 
     | 
    
         
            +
                    
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
                    if($paged-$range1-1 > 1 && $paged-10-1 != 1)
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
                        echo "… ";
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
                        
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
                    if( !(($paged-$range1) < ($paged-10) && ($paged-10) < ($paged+$range2)) && ($paged-10) > 1 )
         
     | 
| 
       67 
71 
     | 
    
         
             
                        echo '<a href="', get_pagenum_link($paged - 10) ,'">', $paged - 10 ,'</a>… ';
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
                    
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
                    for($it = $range1; $it > 0; $it--)
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
                        if( $paged-$it > 0)
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 75 
     | 
    
         
            +
                            echo '<a href="', get_pagenum_link($paged - $it) ,'">', $paged - $it ,'</a> ';
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 76 
     | 
    
         
            +
                    
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
      
 77 
     | 
    
         
            +
                    echo $paged, " ";
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
                    
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
                    for($it = 1; $it <= $range2; $it++)
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                        if( $paged + $it <= $pages )
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
                            echo '<a href="', get_pagenum_link($paged + $it) ,'">', $paged + $it ,'</a> ';
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 82 
     | 
    
         
            +
                    
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 83 
     | 
    
         
            +
                    if( !(($paged-$range1) < ($paged+10) && ($paged+10) < ($paged+$range2)) && ($paged+10) < $pages )
         
     | 
| 
       80 
84 
     | 
    
         
             
                        echo '…<a href="', get_pagenum_link($paged + 10) ,'">', $paged + 10 ,'</a> ';
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
      
 85 
     | 
    
         
            +
                    
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
                    if($paged+$range2+1 < $pages && $paged+10+1 != $pages)
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
                        echo "… ";
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
      
 88 
     | 
    
         
            +
                    
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 89 
     | 
    
         
            +
                    if( !(($paged-$range1) <= $pages && $pages <= ($paged+$range2)) )
         
     | 
| 
       86 
90 
     | 
    
         
             
                        echo '<a href="', get_pagenum_link($pages) ,'">', "最後" ,'</a> ';
         
     | 
| 
       87 
91 
     | 
    
         
             
                }
         
     | 
| 
       88 
92 
     | 
    
         
             
            }
         
     | 
4
全体のコードを追記
    
        answer	
    CHANGED
    
    | 
         @@ -26,4 +26,64 @@ 
     | 
|
| 
       26 
26 
     | 
    
         
             
            $max pages = $wp_query->max_num_pages;
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            if($max_page >= $paged+10)echo get_pagenum_link($paged+10)
         
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            ---
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            追記3
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            動作未検証です。
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            ```PHP
         
     | 
| 
      
 38 
     | 
    
         
            +
            global $wp_query;
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            $pages = $wp_query->max_num_pages;
         
     | 
| 
      
 41 
     | 
    
         
            +
            $paged = get_query_var("paged") ?: 1;
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            teratail_paginatio(100, $paged, 5);
         
     | 
| 
      
 44 
     | 
    
         
            +
            ```
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            ```PHP
         
     | 
| 
      
 47 
     | 
    
         
            +
            /**
         
     | 
| 
      
 48 
     | 
    
         
            +
            * ページネーション出力関数
         
     | 
| 
      
 49 
     | 
    
         
            +
            * $pages : 全ページ数
         
     | 
| 
      
 50 
     | 
    
         
            +
            * $paged : 現在のページ
         
     | 
| 
      
 51 
     | 
    
         
            +
            * $range : 左右に何ページ表示するか
         
     | 
| 
      
 52 
     | 
    
         
            +
            */
         
     | 
| 
      
 53 
     | 
    
         
            +
            function teratail_pagination($pages, $paged, $range) {
         
     | 
| 
      
 54 
     | 
    
         
            +
            	
         
     | 
| 
      
 55 
     | 
    
         
            +
            	// 1頁のみ
         
     | 
| 
      
 56 
     | 
    
         
            +
                if ( $pages === 1 ) return;
         
     | 
| 
      
 57 
     | 
    
         
            +
            	
         
     | 
| 
      
 58 
     | 
    
         
            +
            	// 複数頁
         
     | 
| 
      
 59 
     | 
    
         
            +
                if ( 1 !== $pages ) {
         
     | 
| 
      
 60 
     | 
    
         
            +
                	if( !((($paged-$range) <= 1) && (1 <= ($paged+$range))) )
         
     | 
| 
      
 61 
     | 
    
         
            +
                        echo '<a href="', get_pagenum_link(1) ,'">', "先頭" ,'</a> ';
         
     | 
| 
      
 62 
     | 
    
         
            +
                	
         
     | 
| 
      
 63 
     | 
    
         
            +
                	if($paged-$range-1 > 1 && $paged-10-1 != 1)
         
     | 
| 
      
 64 
     | 
    
         
            +
                		echo "… ";
         
     | 
| 
      
 65 
     | 
    
         
            +
                		
         
     | 
| 
      
 66 
     | 
    
         
            +
                	if( !(($paged-$range) < ($paged-10) && ($paged-10) < ($paged+$range)) && ($paged-10) > 1 )
         
     | 
| 
      
 67 
     | 
    
         
            +
                        echo '<a href="', get_pagenum_link($paged - 10) ,'">', $paged - 10 ,'</a>… ';
         
     | 
| 
      
 68 
     | 
    
         
            +
                	
         
     | 
| 
      
 69 
     | 
    
         
            +
                	for($it = $range; $it > 0; $it--)
         
     | 
| 
      
 70 
     | 
    
         
            +
                		if( $paged-$it > 0)
         
     | 
| 
      
 71 
     | 
    
         
            +
            	            echo '<a href="', get_pagenum_link($paged - $it) ,'">', $paged - $it ,'</a> ';
         
     | 
| 
      
 72 
     | 
    
         
            +
                	
         
     | 
| 
      
 73 
     | 
    
         
            +
                	echo $paged, " ";
         
     | 
| 
      
 74 
     | 
    
         
            +
                	
         
     | 
| 
      
 75 
     | 
    
         
            +
                	for($it = 1; $it <= $range; $it++)
         
     | 
| 
      
 76 
     | 
    
         
            +
            	    	if( $paged + $it <= $pages )
         
     | 
| 
      
 77 
     | 
    
         
            +
                        	echo '<a href="', get_pagenum_link($paged + $it) ,'">', $paged + $it ,'</a> ';
         
     | 
| 
      
 78 
     | 
    
         
            +
                	
         
     | 
| 
      
 79 
     | 
    
         
            +
                	if( !(($paged-$range) < ($paged+10) && ($paged+10) < ($paged+$range)) && ($paged+10) < $pages )
         
     | 
| 
      
 80 
     | 
    
         
            +
                        echo '…<a href="', get_pagenum_link($paged + 10) ,'">', $paged + 10 ,'</a> ';
         
     | 
| 
      
 81 
     | 
    
         
            +
                	
         
     | 
| 
      
 82 
     | 
    
         
            +
                	if($paged+$range+1 < $pages && $paged+10+1 != $pages)
         
     | 
| 
      
 83 
     | 
    
         
            +
                		echo "… ";
         
     | 
| 
      
 84 
     | 
    
         
            +
                	
         
     | 
| 
      
 85 
     | 
    
         
            +
                	if( !(($paged-$range) <= $pages && $pages <= ($paged+$range)) )
         
     | 
| 
      
 86 
     | 
    
         
            +
                        echo '<a href="', get_pagenum_link($pages) ,'">', "最後" ,'</a> ';
         
     | 
| 
      
 87 
     | 
    
         
            +
                }
         
     | 
| 
      
 88 
     | 
    
         
            +
            }
         
     | 
| 
       29 
89 
     | 
    
         
             
            ```
         
     | 
3
書きかけのコード追記
    
        answer	
    CHANGED
    
    | 
         @@ -19,8 +19,11 @@ 
     | 
|
| 
       19 
19 
     | 
    
         
             
            > 追記戴いたget_pagenum_link($paged + 10):では、例として全50ページある時に41ページ目以降を表示中だと存在しないページを指定して変なことになりますよね。10ページ前も同様です。
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            ```PHP
         
     | 
| 
      
 22 
     | 
    
         
            +
            //未検証
         
     | 
| 
       22 
23 
     | 
    
         
             
            global $wp_query;
         
     | 
| 
      
 24 
     | 
    
         
            +
            global $paged; // 現在のページ番号
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       23 
26 
     | 
    
         
             
            $max pages = $wp_query->max_num_pages;
         
     | 
| 
       24 
27 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            if(
         
     | 
| 
      
 28 
     | 
    
         
            +
            if($max_page >= $paged+10)echo get_pagenum_link($paged+10)
         
     | 
| 
       26 
29 
     | 
    
         
             
            ```
         
     | 
2
質問者コメント修正に対しての追記
    
        answer	
    CHANGED
    
    | 
         @@ -10,4 +10,17 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
            // 一般的なページネーションを作成した上で、10ページ先のリンクを出力する処理を追加
         
     | 
| 
       11 
11 
     | 
    
         
             
            global $paged; // 現在のページ番号
         
     | 
| 
       12 
12 
     | 
    
         
             
            echo get_pagenum_link($paged + 10):
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ---
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            追記2
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            > 追記戴いたget_pagenum_link($paged + 10):では、例として全50ページある時に41ページ目以降を表示中だと存在しないページを指定して変なことになりますよね。10ページ前も同様です。
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ```PHP
         
     | 
| 
      
 22 
     | 
    
         
            +
            global $wp_query;
         
     | 
| 
      
 23 
     | 
    
         
            +
            $max pages = $wp_query->max_num_pages;
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            if(
         
     | 
| 
       13 
26 
     | 
    
         
             
            ```
         
     | 
1
質問者のコメントをうけて追記
    
        answer	
    CHANGED
    
    | 
         @@ -1,3 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            特殊なページネーションを使いたいのであれば、プラグインを使うのではなく、専用のページネーションをPHPで書いてしまったほうが手っ取り早いです。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            [https://wemo.tech/978](https://wemo.tech/978)や[https://web-ashibi.net/archives/971](https://web-ashibi.net/archives/971)などを参考にして基本的なページネーションを作成したうえで、10ページ先のリンクを表示するように書けば完了です。
         
     | 
| 
      
 3 
     | 
    
         
            +
            [https://wemo.tech/978](https://wemo.tech/978)や[https://web-ashibi.net/archives/971](https://web-ashibi.net/archives/971)などを参考にして基本的なページネーションを作成したうえで、10ページ先のリンクを表示するように書けば完了です。
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ---
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            追記
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ```PHP
         
     | 
| 
      
 10 
     | 
    
         
            +
            // 一般的なページネーションを作成した上で、10ページ先のリンクを出力する処理を追加
         
     | 
| 
      
 11 
     | 
    
         
            +
            global $paged; // 現在のページ番号
         
     | 
| 
      
 12 
     | 
    
         
            +
            echo get_pagenum_link($paged + 10):
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     |