質問編集履歴

2

2022/01/12 04:47

投稿

kakeshi
kakeshi

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,245 +1,123 @@
1
1
  こちらの[サイト](https://webfun-style.com/wordpress-custom-search/)を参考に、WordPressの固定ページにページネーションをつけました。
2
2
 
3
-
4
-
5
3
  ■問題点
6
-
7
4
  3ページ目で「検索」ボタンを押すと、1ページ目に戻らずに3ページ目のままになってしまいます。
8
-
9
5
  なので、例えば検索結果が2ページ分しかない場合は「検索結果はなし」となってしまいます。
10
-
11
6
  実際は1ページ目と2ページ目が存在しているはずです。
12
7
 
13
-
14
-
15
8
  ■やりたいこと
16
-
17
9
  そこで、一覧表示後にもう一度「検索」のボタンを押したときに、最初の1ページ目に戻って再度一覧を表示してページネーションするようにしたいです。
18
10
 
19
-
20
-
21
11
  以下がコードになります。
22
-
23
12
  固定ページにショートコードを記入する形でcustum-serch.phpを読み込んで表示しております。
24
13
 
25
-
26
-
27
14
  custom-search.php
28
-
29
15
  ```<!-- 1. 検索条件の取得と変数の設定 -->
30
-
31
16
  <?php
32
-
33
17
  // ページ番号を取得
34
-
35
18
  $paged = get_query_var('paged') ? get_query_var('paged') : 1;
36
-
37
19
  $args = array(
38
-
39
20
  'paged' => $paged, // ページ番号を設定
40
-
41
21
  'post_type' => 'post',
42
-
43
22
  'post_status' => 'publish',
44
-
45
23
  'posts_per_page' => 2, // 一つのページに表示する件数を設定
46
-
47
24
  'orderby' => 'date',
48
-
49
25
  'order' => 'DESC'
50
-
51
26
  );
52
27
 
53
-
54
-
55
28
  if (!empty($_GET['search_category'])) {
56
-
57
29
  foreach ($_GET['search_category'] as $value) {
58
-
59
30
  $search_category[] = htmlspecialchars($value, ENT_QUOTES);
60
-
61
31
  }
62
-
63
32
  $args += array('category__in' => $search_category);
64
-
65
33
  }
66
34
 
67
-
68
-
69
35
  if (!empty($_GET['search_tag'])) {
70
-
71
36
  foreach ($_GET['search_tag'] as $value) {
72
-
73
37
  $search_tag[] = htmlspecialchars($value, ENT_QUOTES);
74
-
75
38
  }
76
-
77
39
  $args += array('tag__in' => $search_tag);
78
-
79
40
  }
80
-
81
41
  ?>
82
42
 
83
-
84
-
85
43
  <!-- 2. 検索フォームの表示 -->
86
-
87
44
  <div class="search">
88
-
89
45
  <form method="get" action="<?php echo esc_url(home_url() . $_SERVER['REQUEST_URI']); ?>">
90
-
91
46
  <div class="checkbox">
92
47
 
93
-
94
-
95
48
  <div class="condition-title">エリア</div>
96
-
97
49
  <div class="condition">
98
-
99
50
  <?php
100
-
101
51
  $categories = get_categories(array('hide_empty' => false));
102
-
103
52
  foreach ($categories as $category) :
104
-
105
53
  $checked = "";
106
-
107
54
  if (in_array($category->term_id, $search_category)) $checked = " checked";
108
-
109
55
  ?>
110
-
111
56
  <label>
112
-
113
57
  <input type="checkbox" name="search_category[]" value="<?php echo esc_attr($category->term_id); ?>" <?php echo $checked; ?>>
114
-
115
58
  <?php echo esc_html($category->name); ?>
116
-
117
59
  </label>
118
-
119
60
  <?php endforeach; ?>
120
-
121
61
  </div>
122
62
 
123
-
124
-
125
63
  <div class="condition-title">特徴</div>
126
-
127
64
  <div class="condition">
128
-
129
65
  <?php
130
-
131
66
  $tags = get_tags(array('hide_empty' => false));
132
-
133
67
  foreach ($tags as $tag) :
134
-
135
68
  $checked = "";
136
-
137
69
  if (in_array($tag->term_id, $search_tag)) $checked = " checked";
138
-
139
70
  ?>
140
-
141
71
  <label>
142
-
143
72
  <input type="checkbox" name="search_tag[]" value="<?php echo esc_attr($tag->term_id); ?>" <?php echo $checked; ?>>
144
-
145
73
  <?php echo esc_html($tag->name); ?>
146
-
147
74
  </label>
148
-
149
75
  <?php endforeach; ?>
150
-
151
76
  </div>
152
-
153
-
154
77
 
155
78
  </div>
156
79
 
157
-
158
-
159
80
  <input type="submit" value="検索" class="submit-button">
160
-
161
-
162
81
 
163
82
  </form>
164
83
 
165
-
166
-
167
84
  <!-- 3. 検索結果の取得と表示 -->
168
-
169
85
  <?php
170
-
171
86
  $the_query = new WP_Query($args);
172
-
173
87
  if ($the_query->have_posts()) :
174
-
175
88
  ?>
176
-
177
89
  <div class="result">
178
-
179
90
  <?php
180
-
181
91
  while ($the_query->have_posts()) :
182
-
183
92
  $the_query->the_post();
184
-
185
93
  ?>
186
-
187
94
  <div class="article">
188
-
189
95
  <a href="<?php the_permalink(); ?>">
190
-
191
96
  <?php the_post_thumbnail('medium'); ?>
192
-
193
97
  <div><?php the_title(); ?></div>
194
-
195
98
  </a>
196
-
197
99
  </div>
198
-
199
100
  <?php endwhile;
200
-
201
101
  wp_reset_postdata(); ?>
202
-
203
102
  </div>
204
103
 
205
-
206
-
207
104
  <?php
208
-
209
105
  // ページャーを設置
210
-
211
106
  echo paginate_links(array(
212
-
213
107
  'total' => $the_query->max_num_pages,
214
-
215
108
  'current' => $paged,
216
-
217
109
  'type' => 'list',
218
-
219
110
  ));
220
-
221
111
  ?>
222
-
223
112
  <?php else : ?>
224
-
225
113
  <p>該当する物件はありませんでした。</p>
226
-
227
114
  <?php endif; ?>
228
115
 
229
-
230
-
231
116
  </div>
232
-
233
117
  コード
234
-
235
118
  ```
236
-
237
-
238
119
 
239
120
  以上となります。
240
121
 
241
-
242
-
243
122
  私が、PHPやWEB系があまり詳しくないため、どこに何を書けばいいか、どの関数を使うのかなど詳しく教えていただきたいです。
244
-
245
123
  どなたかご教授お願いいたします。

1

参考サイトのリンクを設定し直しました。

2022/01/11 08:12

投稿

kakeshi
kakeshi

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- こちらのサイトを参考に、WordPressの固定ページにページネーションをつけました。
1
+ こちらの[サイト](https://webfun-style.com/wordpress-custom-search/)を参考に、WordPressの固定ページにページネーションをつけました。
2
2
 
3
3
 
4
4