質問編集履歴

2

ソースコードから不要な部分を削除

2018/12/13 15:56

投稿

yamasen
yamasen

スコア23

test CHANGED
File without changes
test CHANGED
@@ -324,7 +324,7 @@
324
324
 
325
325
  */
326
326
 
327
- public static function pagination( $pages, $paged, $range = 2, $show_only = false ) {
327
+ function pagination( $pages, $paged, $range = 2, $show_only = false ) {
328
328
 
329
329
 
330
330
 

1

ページネーション出力関数を追記

2018/12/13 15:56

投稿

yamasen
yamasen

スコア23

test CHANGED
File without changes
test CHANGED
@@ -54,6 +54,8 @@
54
54
 
55
55
 
56
56
 
57
+
58
+
57
59
  ```php
58
60
 
59
61
  // 必要な変数やnonceを最初から出しておく
@@ -182,20 +184,18 @@
182
184
 
183
185
  endwhile;
184
186
 
187
+
188
+
189
+ // ページネーション出力
190
+
191
+ if ( function_exists( 'pagination' ) ) :
192
+
193
+ pagination( $myquery->max_num_pages, $paged );
194
+
195
+ endif;
196
+
185
197
 
186
198
 
187
- if (function_exists('pagination')) {
188
-
189
- $GLOBALS['wp_query']->max_num_pages = $myquery->max_num_pages;
190
-
191
- $max_num_pages = $myquery->max_num_pages;
192
-
193
- pagination($max_num_pages);
194
-
195
- }
196
-
197
-
198
-
199
199
  wp_reset_postdata();
200
200
 
201
201
 
@@ -304,6 +304,152 @@
304
304
 
305
305
  ```
306
306
 
307
+ ### 追記
308
+
309
+ ページネーション出力関数を追記致します。
310
+
311
+ ```php
312
+
313
+ /**
314
+
315
+ * ページネーション出力関数
316
+
317
+ * $paged : 現在のページ
318
+
319
+ * $pages : 全ページ数
320
+
321
+ * $range : 左右に何ページ表示するか
322
+
323
+ * $show_only : 1ページしかない時に表示するかどうか
324
+
325
+ */
326
+
327
+ public static function pagination( $pages, $paged, $range = 2, $show_only = false ) {
328
+
329
+
330
+
331
+ $pages = ( int ) $pages; //float型で渡ってくるので明示的に int型 へ
332
+
333
+ $paged = $paged ?: 1; //get_query_var('paged')をそのまま投げても大丈夫なように
334
+
335
+
336
+
337
+ //表示テキスト
338
+
339
+ $text_first = "« 最初へ";
340
+
341
+ $text_before = "‹ 前へ";
342
+
343
+ $text_next = "次へ ›";
344
+
345
+ $text_last = "最後へ »";
346
+
347
+
348
+
349
+ // 表示形式
350
+
351
+ $big = 9999999999;
352
+
353
+ $args = array(
354
+
355
+ 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
356
+
357
+ 'format' => '%#%',
358
+
359
+ );
360
+
361
+
362
+
363
+ if ( $show_only && $pages === 1 ) {
364
+
365
+ // 1ページのみで表示設定が true の時
366
+
367
+ echo '<div class="pagination"><span class="current pager">1</span></div>';
368
+
369
+ return;
370
+
371
+ }
372
+
373
+
374
+
375
+ if ( $pages === 1 ) return; // 1ページのみで表示設定もない場合
376
+
377
+
378
+
379
+ if ( 1 !== $pages ) {
380
+
381
+ //2ページ以上の時
382
+
383
+ echo '<div class="pagination"><span class="page_num">Page ', $paged ,' of ', $pages ,'</span>';
384
+
385
+ if ( $paged > $range + 1 ) {
386
+
387
+ // 「最初へ」 の表示
388
+
389
+ echo '<a href="', get_pagenum_link(1) ,'" class="first">', $text_first ,'</a>';
390
+
391
+ }
392
+
393
+ if ( $paged > 1 ) {
394
+
395
+ // 「前へ」 の表示
396
+
397
+ echo '<a href="', get_pagenum_link( $paged - 1 ) ,'" class="prev">', $text_before ,'</a>';
398
+
399
+ }
400
+
401
+ for ( $i = 1; $i <= $pages; $i++ ) {
402
+
403
+
404
+
405
+ if ( $i <= $paged + $range && $i >= $paged - $range ) {
406
+
407
+ // $paged +- $range 以内であればページ番号を出力
408
+
409
+ if ( $paged === $i ) {
410
+
411
+ echo '<span class="current pager">', $i ,'</span>';
412
+
413
+ } else {
414
+
415
+ echo '<a href="', get_pagenum_link( $i ) ,'" class="pager">', $i ,'</a>';
416
+
417
+ }
418
+
419
+ }
420
+
421
+
422
+
423
+ }
424
+
425
+ if ( $paged < $pages ) {
426
+
427
+ // 「次へ」 の表示
428
+
429
+ echo '<a href="', get_pagenum_link( $paged + 1 ) ,'" class="next">', $text_next ,'</a>';
430
+
431
+ }
432
+
433
+ if ( $paged + $range < $pages ) {
434
+
435
+ // 「最後へ」 の表示
436
+
437
+ echo '<a href="', get_pagenum_link( $pages ) ,'" class="last">', $text_last ,'</a>';
438
+
439
+ }
440
+
441
+ echo '</div>';
442
+
443
+ }
444
+
445
+ }
446
+
447
+ ```
448
+
449
+
450
+
451
+
452
+
307
453
  ### 試したこと
308
454
 
309
455