teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

情報追加

2021/03/22 10:12

投稿

ztj
ztj

スコア14

title CHANGED
File without changes
body CHANGED
@@ -65,6 +65,11 @@
65
65
 
66
66
 
67
67
  ### ページャーについて
68
+ 記事とプルダウン(ターム)、それぞれ投稿タイプごとに所有するものが表示されるようになりましたが、ページャーがそれごとに生成されません。
69
+ 恐らくNEWS以外のページの記事も合算されてページャーが生成されています。
70
+ 例えば1ページ10の記事が表示されるとして、NEWS記事は5、他投稿タイプで30の記事がある場合、
71
+ NEWSで4ページ分のページャーが生成されてしまいます。
72
+ (表示されている記事は5つのみ、2ページ目以降は記事はなくページャーのみ)
68
73
  ```php
69
74
  //functions.phpの内容です
70
75
 

2

説明追加

2021/03/22 10:12

投稿

ztj
ztj

スコア14

title CHANGED
File without changes
body CHANGED
@@ -65,7 +65,8 @@
65
65
 
66
66
 
67
67
  ### ページャーについて
68
+ ```php
68
- ```functions.php
69
+ //functions.phpの内容です
69
70
 
70
71
  <?php //ページャー部分
71
72
  function pagination( $pages, $paged, $range = 2, $show_only = false ) {

1

コードの追加

2021/03/22 10:08

投稿

ztj
ztj

スコア14

title CHANGED
File without changes
body CHANGED
@@ -61,4 +61,98 @@
61
61
  NEWSのアーカイブページのプルダウンでは、NEWSの記事が該当するタームのみ表示させるには、どのようにすればよいでしょうか。
62
62
 
63
63
  うまく伝わるかわかりませんが、情報不足な点があったらお知らせください。
64
- よろしくお願いいたします。
64
+ よろしくお願いいたします。
65
+
66
+
67
+ ### ページャーについて
68
+ ```functions.php
69
+
70
+ <?php //ページャー部分
71
+ function pagination( $pages, $paged, $range = 2, $show_only = false ) {
72
+ $pages = ( int ) $pages;
73
+ $paged = $paged ?: 1;
74
+ $text_first = "<<";
75
+ $text_before = "<";
76
+ $text_next = ">";
77
+ $text_last = ">>";
78
+ if ( $show_only && $pages === 1 ) {
79
+ echo '<div class="pager"><ul class="pager-list"><li><a class="current" href="">1</a></li></ul></div>';
80
+ return;
81
+ }
82
+ if ( $pages === 1 ) return; // 1ページのみで表示設定もない場合
83
+ if ( 1 !== $pages ) {
84
+ //2ページ以上の時
85
+ echo '<div class="pager"><ul class="pager-list">';
86
+ // echo '<div class="pagination"><span class="page_num">Page ', $paged ,' of ', $pages ,'</span>';
87
+ //現在のページ数などを表示する場合はこの上のコメントアウトを外す。
88
+ if ( $paged > $range + 1 ) {
89
+ // 「最初へ」 の表示
90
+ echo '<li class="prev-area"><a href="', get_pagenum_link(1) ,'" class="prev">', $text_first ,'</a></li>';
91
+ }
92
+ if ( $paged > 1 ) {
93
+ // 「前へ」 の表示
94
+ echo '<li class="prev-area"><a href="', get_pagenum_link( $paged - 1 ) ,'" class="prev">', $text_before ,'</a></li>';
95
+ }
96
+ for ( $i = 1; $i <= $pages; $i++ ) {
97
+ if ( $i <= $paged + $range && $i >= $paged - $range ) {
98
+ // $paged +- $range 以内であればページ番号を出力
99
+ if ( $paged === $i ) {
100
+ echo '<li><a class="current" href="">', $i ,'</a></li>';
101
+ } else {
102
+ echo '<li><a href="', get_pagenum_link( $i ) ,'">', $i ,'</a></li>';
103
+ }
104
+ }
105
+ }
106
+ if ( $paged < $pages ) {
107
+ // 「次へ」 の表示
108
+ echo '<li class="next-area"><a href="', get_pagenum_link( $paged + 1 ) ,'" class="next">', $text_next ,'</a></li>';
109
+ }
110
+ if ( $paged + $range < $pages ) {
111
+ // 「最後へ」 の表示
112
+ echo '<li class="next-area"><a href="', get_pagenum_link( $pages ) ,'" class="next">', $text_last ,'</a></li>';
113
+ }
114
+ echo '</ul></div>';
115
+ }
116
+ }
117
+ ?>
118
+
119
+ ```
120
+
121
+ ```php
122
+
123
+ <ul>
124
+ <?php
125
+ $paged = get_query_var('paged') ? get_query_var('paged') : 1 ;
126
+ $term = wp_get_object_terms($post->ID, 'items');
127
+ $args = array(
128
+ 'post_type' => 'news',
129
+ 'taxonomy' => 'items',
130
+ 'term' => $term[0]->slug,
131
+ 'posts_per_page' => 7,
132
+ 'paged' => $paged
133
+ );
134
+ $custom_query = new WP_Query( $args );
135
+ if ( $custom_query->have_posts() ) :
136
+ while ( $custom_query->have_posts() ) :
137
+ $custom_query->the_post();
138
+ ?>
139
+      <!-- ▽ ループ開始 ▽ -->
140
+ <li>
141
+ 記事内容
142
+ </li>
143
+ <!-- △ ループ終了 △ -->
144
+
145
+ <?php endwhile;
146
+ endif;
147
+ wp_reset_postdata();
148
+ ?>
149
+ </ul>
150
+ <!-- ページネーション -->
151
+ <?php
152
+ if ( function_exists( 'pagination' ) ) :
153
+ pagination( $wp_query->max_num_pages, get_query_var( 'paged' ) );
154
+ endif;
155
+ ?>
156
+
157
+
158
+ ```