質問編集履歴

2

変更

2017/05/28 14:19

投稿

destrudo
destrudo

スコア143

test CHANGED
File without changes
test CHANGED
@@ -1,218 +1,6 @@
1
- ```ここに言語を入力
2
-
3
- //①カテゴリーで条件を絞り込むコード
4
-
5
- <?php
6
-
7
- if(isset($_GET['ct']) && $_GET['ct'] != "" && $_GET['ct'] != 0){
1
+ wordpressの質問です。セレクトボックスで選択した値を条件に追加して、wp_qrueryでループで記事を表示するコードを作っています。月で、条件を指定したいのですが、このコードだと動作しないです。
8
-
9
- $tax_query[] = array (
10
-
11
- 'taxonomy' => 'my_category',
12
-
13
- 'field' => 'id',
14
-
15
- 'terms' => $_GET['ct']
16
-
17
- );
18
2
 
19
3
 
20
-
21
- $category_selected = $_GET['ct'];
22
-
23
-
24
-
25
- $the_query = new WP_Query( array(
26
-
27
- 'post_type' => 'diary',
28
-
29
- 'tax_query' => $tax_query,
30
-
31
- 'paged' => $paged,
32
-
33
- ) );
34
-
35
-
36
-
37
- <form method="get" action="">
38
-
39
- <?php wp_dropdown_categories( array(
40
-
41
- 'name'=>'ct',
42
-
43
- 'title_li' => '',
44
-
45
- 'taxonomy' => 'my_category',
46
-
47
- 'hide_empty'=> 0,
48
-
49
- 'value_field'=>'id',
50
-
51
- 'selected' => $category_selected,
52
-
53
- 'show_option_all' => 'すべて'
54
-
55
- )
56
-
57
- ); ?>
58
-
59
- <input type="submit"/>
60
-
61
- </form>
62
-
63
- ?>
64
-
65
-
66
-
67
- <!-- Main Loop -->
68
-
69
- <?php if( $the_query->have_posts() ): ?>
70
-
71
-
72
-
73
- <ul>
74
-
75
- <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
76
-
77
- <li><?php get_template_part( 'template-parts/custom/list/common-list-item', get_post_format() ); ?></li>
78
-
79
- <?php endwhile; ?>
80
-
81
- </ul>
82
-
83
- ```
84
-
85
- ```ここに言語を入力
86
-
87
- //②月で条件を指定したい
88
-
89
- if(isset($_GET['month']) && $_GET['month'] != "" && $_GET['month'] != 0){
90
-
91
- $tax_query[] = array (
92
-
93
- 'taxonomy' => 'news',
94
-
95
- 'terms' => $_GET['month']
96
-
97
- );
98
-
99
-
100
-
101
- $month_selected = $_GET['month'];
102
-
103
- }
104
-
105
-
106
-
107
- $the_query = new WP_Query( array(
108
-
109
- 'post_type' => 'diary',
110
-
111
- 'tax_query' => $tax_query,
112
-
113
- 'paged' => $paged,
114
-
115
- ) );
116
-
117
-
118
-
119
- <form method="get" action="">
120
-
121
-
122
-
123
- <!-- month list -->
124
-
125
-
126
-
127
- <SELECT name="month">
128
-
129
- <option value="">--</option>
130
-
131
- <option value="1">01</option>
132
-
133
- <option value="2">02</option>
134
-
135
- <option value="3">03</option>
136
-
137
- <option value="4">04</option>
138
-
139
- <option value="5">05</option>
140
-
141
- <option value="6">06</option>
142
-
143
- <option value="7">07</option>
144
-
145
- <option value="8">08</option>
146
-
147
- <option value="9">09</option>
148
-
149
- <option value="10">10</option>
150
-
151
- <option value="11">11</option>
152
-
153
- <option value="12">12</option>
154
-
155
- </SELECT>
156
-
157
- <input type="submit"/>
158
-
159
- </form>
160
-
161
-
162
-
163
- <?php
164
-
165
- $the_query = new WP_Query( array(
166
-
167
- 'post_type' => 'diary',
168
-
169
- 'tax_query' => $tax_query,
170
-
171
- 'date_query' => array(
172
-
173
- array(
174
-
175
- 'year' => 2017,
176
-
177
- 'month' => ここにセレクトで送信した月を入れたい,
178
-
179
- ),
180
-
181
- ),
182
-
183
- ) );
184
-
185
- ?>
186
-
187
- ```
188
-
189
- wordpressの質問です。セレクトボックスで選択した値を条件に追加して、wp_qrueryでループで記事を表示するコードを作っています。①は、カテゴリーで条件を絞り込むコードで動きます。今度は月で、条件を指定したいのですが、このコードだと動作しないです。
190
-
191
-
192
-
193
- これは、カテゴリーで選択し、送信ボタンを押した時に飛ぶurlで先ほどの通り動作します。
194
-
195
- ```ここに言語を入力
196
-
197
- A:http://localhost/wordpress/news/?ct=0
198
-
199
- ```
200
-
201
-
202
-
203
- 対して、これは、month=5がそもそも月の指定で機能してないのか、期待した動作がされません。
204
-
205
- ```ここに言語を入力
206
-
207
- B:http://localhost/wordpress/news/?ct=0&month=5
208
-
209
- ```
210
-
211
- 何かいい方法はないでしょうか。
212
-
213
-
214
-
215
- 【追記】
216
4
 
217
5
  ```ここに言語を入力
218
6
 

1

追記

2017/05/28 14:19

投稿

destrudo
destrudo

スコア143

test CHANGED
File without changes
test CHANGED
@@ -209,3 +209,127 @@
209
209
  ```
210
210
 
211
211
  何かいい方法はないでしょうか。
212
+
213
+
214
+
215
+ 【追記】
216
+
217
+ ```ここに言語を入力
218
+
219
+ if(isset($_POST['month']) && $_POST['month'] != "" && $_POST['month'] != 0){
220
+
221
+ $tax_query[] = array (
222
+
223
+ 'taxonomy' => 'news',
224
+
225
+ 'terms' => $_POST['month']
226
+
227
+ );
228
+
229
+
230
+
231
+ $month_selected = $_POST['month'];
232
+
233
+ }
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+ //pagination init
242
+
243
+ $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
244
+
245
+
246
+
247
+ // page main query
248
+
249
+ $the_query = new WP_Query( array(
250
+
251
+ 'post_type' => 'news',
252
+
253
+ 'tax_query' => $tax_query,
254
+
255
+ 'posts_per_page' => THEME_ITEM_PER_PAGE,
256
+
257
+ 'paged' => $paged,
258
+
259
+ 'date_query' => array(
260
+
261
+ array(
262
+
263
+ 'year' => 2017,
264
+
265
+ 'month' =>$month_selected,
266
+
267
+
268
+
269
+ ),
270
+
271
+ ),
272
+
273
+
274
+
275
+
276
+
277
+ )
278
+
279
+ );
280
+
281
+ var_dump($month_selected);
282
+
283
+ ?>
284
+
285
+
286
+
287
+ <form method="post" action="">
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+ <SELECT name="month">
296
+
297
+ <option value="">--</option>
298
+
299
+ <option value="1">01</option>
300
+
301
+ <option value="2">02</option>
302
+
303
+ <option value="3">03</option>
304
+
305
+ <option value="4">04</option>
306
+
307
+ <option value="5">05</option>
308
+
309
+ <option value="6">06</option>
310
+
311
+ <option value="7">07</option>
312
+
313
+ <option value="8">08</option>
314
+
315
+ <option value="9">09</option>
316
+
317
+ <option value="10">10</option>
318
+
319
+ <option value="11">11</option>
320
+
321
+ <option value="12">12</option>
322
+
323
+
324
+
325
+ </SELECT>
326
+
327
+
328
+
329
+ <input type="submit"/>
330
+
331
+ </form>
332
+
333
+ ```
334
+
335
+ こういう月で条件で指定するコードを作ったのですが、var_dump($month_selected)すると、選択した月の値、(例えば4など)が出力されます。'month' =>4と実験的に直に指定すると、4月の記事だけが表示されるのですが、今のコードだと'month' =>$month_selected,上手くいきません。書き方がまずいのでしょうか。