質問編集履歴

6

追記2を追記

2020/08/14 14:12

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -220,7 +220,7 @@
220
220
 
221
221
  ### 追記
222
222
 
223
- KazuhiroHatanoから【よりよい対策】として $_SERVER['REQUEST_URI'] でなく $GLOBALS['wp'] を試すようアドバイスを頂きました
223
+ KazuhiroHatanoから【よりよい対策】として $_SERVER['REQUEST_URI'] でなく $GLOBALS['wp'] を試すようアドバイスを頂きました
224
224
 
225
225
 
226
226
 
@@ -634,6 +634,78 @@
634
634
 
635
635
 
636
636
 
637
-
638
-
639
- ```
637
+ ```
638
+
639
+ ### 追記2
640
+
641
+ KazuhiroHatano様へ
642
+
643
+ こちらは上記が「http://example.com」でも「http://example.com/products/roomba/favorites」でも出力されることを確認したコードになります
644
+
645
+ ```php
646
+
647
+ <div class="test">
648
+
649
+ <?php
650
+
651
+ /* header.phpに記載 */
652
+
653
+
654
+
655
+ // 上記の追記と同じものを$strに代入
656
+
657
+ $str = 'object(WP)#411 (9) {
658
+
659
+ /* 省略 */
660
+
661
+ }';
662
+
663
+
664
+
665
+ // 開いたページでの var_dump($GLOBALS['wp']) が $str と同じかどうかを確認
666
+
667
+ ob_start();
668
+
669
+ var_dump($GLOBALS['wp']);
670
+
671
+ $dump = rtrim(ob_get_contents());
672
+
673
+ ob_end_clean();
674
+
675
+
676
+
677
+ // $str が、var_dump($GLOBALS['wp']) であれば "$is_match is true" が echo される
678
+
679
+ $is_match = ($str === $dump);
680
+
681
+ echo '$is_match is ' . json_encode($is_match).PHP_EOL;
682
+
683
+
684
+
685
+ // home_urlを確認
686
+
687
+ var_dump(home_url()); // "string(18) "http://example.com"
688
+
689
+ ?>
690
+
691
+ </div>
692
+
693
+ ```
694
+
695
+ ↓結果
696
+
697
+
698
+
699
+ 「http://example.com」 で実行しても 「http://example.com/products/roomba/favorites」 で実行してもこちらの結果でした
700
+
701
+ ```
702
+
703
+ <div class="test">
704
+
705
+ $is_match is true
706
+
707
+ string(18) "http://example.com
708
+
709
+ </div>
710
+
711
+ ```

5

誤字

2020/08/14 14:12

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -628,7 +628,7 @@
628
628
 
629
629
  var_dump(home_url());を実行しました
630
630
 
631
- string(28) "http://example.com"
631
+ string(18) "http://example.com"
632
632
 
633
633
  </div>
634
634
 

4

追記に追記

2020/08/14 05:42

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -224,7 +224,7 @@
224
224
 
225
225
 
226
226
 
227
- さっそく「http://example.com/products/roomba/favorites/」の header.php に var_dump($GLOBALS['wp']); を書いた結果が以下です
227
+ さっそく「http://example.com/products/roomba/favorites/」の header.php に以下試しました
228
228
 
229
229
 
230
230
 
@@ -232,9 +232,43 @@
232
232
 
233
233
  なので冒頭の define のような情報は得られないのでは、と思いました。
234
234
 
235
+
236
+
235
237
  ```PHP
236
238
 
237
-
239
+ <div class="test">
240
+
241
+ <?php
242
+
243
+ /* header.phpに記載 */
244
+
245
+
246
+
247
+ echo 'var_dump($GLOBALS["wp"]);を実行しました'.PHP_EOL;
248
+
249
+ var_dump($GLOBALS['wp']);
250
+
251
+
252
+
253
+ echo 'var_dump(home_url());を実行しました'.PHP_EOL;
254
+
255
+ var_dump(home_url());
256
+
257
+ ?>
258
+
259
+ </div>
260
+
261
+ ```
262
+
263
+
264
+
265
+ ↓出力
266
+
267
+ ```PHP
268
+
269
+ <div class="test">
270
+
271
+ var_dump($GLOBALS["wp"]);を実行しました
238
272
 
239
273
  object(WP)#411 (9) {
240
274
 
@@ -592,6 +626,14 @@
592
626
 
593
627
  }
594
628
 
595
-
629
+ var_dump(home_url());を実行しました
630
+
596
-
631
+ string(28) "http://example.com"
632
+
633
+ </div>
634
+
635
+
636
+
637
+
638
+
597
- ```
639
+ ```

3

追記しました

2020/08/14 05:40

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -64,9 +64,9 @@
64
64
 
65
65
  // ページ名 ( $page_name ) に応じて $data を取得する
66
66
 
67
- if( $page_name == 'search' ){
67
+ if( $page_name == 'products' ){
68
-
68
+
69
- $data = '検索ページの場合の値';
69
+ $data = 'productページの場合の値';
70
70
 
71
71
  }elseif( $page_name == '' ){
72
72
 
@@ -140,9 +140,9 @@
140
140
 
141
141
  // ページ名 ( $page_name ) に応じて $data を取得する
142
142
 
143
- if( $page_name == 'search' ){
143
+ if( $page_name == 'products' ){
144
-
144
+
145
- $data = '検索ページの場合の値';
145
+ $data = 'productページの場合の値';
146
146
 
147
147
  }elseif( $page_name == '' ){
148
148
 
@@ -180,9 +180,9 @@
180
180
 
181
181
  // ページ名 ( $page_name ) に応じて $data を取得する
182
182
 
183
- if( $page_name == 'search' ){
183
+ if( $page_name == 'products' ){
184
-
184
+
185
- $data = '検索ページの場合の値';
185
+ $data = 'productページの場合の値';
186
186
 
187
187
  }elseif( $page_name == '' ){
188
188
 
@@ -215,3 +215,383 @@
215
215
 
216
216
 
217
217
  アドバイスお待ちしてます!
218
+
219
+
220
+
221
+ ### 追記
222
+
223
+ KazuhiroHatanoから【よりよい対策】として $_SERVER['REQUEST_URI'] でなく $GLOBALS['wp'] を試すようアドバイスを頂きました
224
+
225
+
226
+
227
+ さっそく「http://example.com/products/roomba/favorites/」の header.php に var_dump($GLOBALS['wp']); を書いた結果が以下です
228
+
229
+
230
+
231
+ productchild や userchild(わたしがリライトルールに加えたもの)が得られていますが、現在の $page_name がそのどちらかまではわかりません。また roombaや favorites の方は得らません。
232
+
233
+ なので冒頭の define のような情報は得られないのでは、と思いました。
234
+
235
+ ```PHP
236
+
237
+
238
+
239
+ object(WP)#411 (9) {
240
+
241
+ ["public_query_vars"]=>
242
+
243
+ array(51) {
244
+
245
+ [0]=>
246
+
247
+ string(1) "m"
248
+
249
+ [1]=>
250
+
251
+ string(1) "p"
252
+
253
+ [2]=>
254
+
255
+ string(5) "posts"
256
+
257
+ [3]=>
258
+
259
+ string(1) "w"
260
+
261
+ [4]=>
262
+
263
+ string(3) "cat"
264
+
265
+ [5]=>
266
+
267
+ string(12) "withcomments"
268
+
269
+ [6]=>
270
+
271
+ string(15) "withoutcomments"
272
+
273
+ [7]=>
274
+
275
+ string(1) "s"
276
+
277
+ [8]=>
278
+
279
+ string(6) "search"
280
+
281
+ [9]=>
282
+
283
+ string(5) "exact"
284
+
285
+ [10]=>
286
+
287
+ string(8) "sentence"
288
+
289
+ [11]=>
290
+
291
+ string(8) "calendar"
292
+
293
+ [12]=>
294
+
295
+ string(4) "page"
296
+
297
+ [13]=>
298
+
299
+ string(5) "paged"
300
+
301
+ [14]=>
302
+
303
+ string(4) "more"
304
+
305
+ [15]=>
306
+
307
+ string(2) "tb"
308
+
309
+ [16]=>
310
+
311
+ string(2) "pb"
312
+
313
+ [17]=>
314
+
315
+ string(6) "author"
316
+
317
+ [18]=>
318
+
319
+ string(5) "order"
320
+
321
+ [19]=>
322
+
323
+ string(7) "orderby"
324
+
325
+ [20]=>
326
+
327
+ string(4) "year"
328
+
329
+ [21]=>
330
+
331
+ string(8) "monthnum"
332
+
333
+ [22]=>
334
+
335
+ string(3) "day"
336
+
337
+ [23]=>
338
+
339
+ string(4) "hour"
340
+
341
+ [24]=>
342
+
343
+ string(6) "minute"
344
+
345
+ [25]=>
346
+
347
+ string(6) "second"
348
+
349
+ [26]=>
350
+
351
+ string(4) "name"
352
+
353
+ [27]=>
354
+
355
+ string(13) "category_name"
356
+
357
+ [28]=>
358
+
359
+ string(3) "tag"
360
+
361
+ [29]=>
362
+
363
+ string(4) "feed"
364
+
365
+ [30]=>
366
+
367
+ string(11) "author_name"
368
+
369
+ [31]=>
370
+
371
+ string(8) "pagename"
372
+
373
+ [32]=>
374
+
375
+ string(7) "page_id"
376
+
377
+ [33]=>
378
+
379
+ string(5) "error"
380
+
381
+ [34]=>
382
+
383
+ string(10) "attachment"
384
+
385
+ [35]=>
386
+
387
+ string(13) "attachment_id"
388
+
389
+ [36]=>
390
+
391
+ string(7) "subpost"
392
+
393
+ [37]=>
394
+
395
+ string(10) "subpost_id"
396
+
397
+ [38]=>
398
+
399
+ string(7) "preview"
400
+
401
+ [39]=>
402
+
403
+ string(6) "robots"
404
+
405
+ [40]=>
406
+
407
+ string(7) "favicon"
408
+
409
+ [41]=>
410
+
411
+ string(8) "taxonomy"
412
+
413
+ [42]=>
414
+
415
+ string(4) "term"
416
+
417
+ [43]=>
418
+
419
+ string(5) "cpage"
420
+
421
+ [44]=>
422
+
423
+ string(9) "post_type"
424
+
425
+ [45]=>
426
+
427
+ string(5) "embed"
428
+
429
+ [46]=>
430
+
431
+ string(11) "post_format"
432
+
433
+ [47]=>
434
+
435
+ string(10) "rest_route"
436
+
437
+ [48]=>
438
+
439
+ string(10) "productchild"
440
+
441
+ [49]=>
442
+
443
+ string(8) "username"
444
+
445
+ [50]=>
446
+
447
+ string(9) "userchild"
448
+
449
+ }
450
+
451
+ ["private_query_vars"]=>
452
+
453
+ array(26) {
454
+
455
+ [0]=>
456
+
457
+ string(6) "offset"
458
+
459
+ [1]=>
460
+
461
+ string(14) "posts_per_page"
462
+
463
+ [2]=>
464
+
465
+ string(22) "posts_per_archive_page"
466
+
467
+ [3]=>
468
+
469
+ string(9) "showposts"
470
+
471
+ [4]=>
472
+
473
+ string(8) "nopaging"
474
+
475
+ [5]=>
476
+
477
+ string(9) "post_type"
478
+
479
+ [6]=>
480
+
481
+ string(11) "post_status"
482
+
483
+ [7]=>
484
+
485
+ string(12) "category__in"
486
+
487
+ [8]=>
488
+
489
+ string(16) "category__not_in"
490
+
491
+ [9]=>
492
+
493
+ string(13) "category__and"
494
+
495
+ [10]=>
496
+
497
+ string(7) "tag__in"
498
+
499
+ [11]=>
500
+
501
+ string(11) "tag__not_in"
502
+
503
+ [12]=>
504
+
505
+ string(8) "tag__and"
506
+
507
+ [13]=>
508
+
509
+ string(12) "tag_slug__in"
510
+
511
+ [14]=>
512
+
513
+ string(13) "tag_slug__and"
514
+
515
+ [15]=>
516
+
517
+ string(6) "tag_id"
518
+
519
+ [16]=>
520
+
521
+ string(14) "post_mime_type"
522
+
523
+ [17]=>
524
+
525
+ string(4) "perm"
526
+
527
+ [18]=>
528
+
529
+ string(17) "comments_per_page"
530
+
531
+ [19]=>
532
+
533
+ string(8) "post__in"
534
+
535
+ [20]=>
536
+
537
+ string(12) "post__not_in"
538
+
539
+ [21]=>
540
+
541
+ string(11) "post_parent"
542
+
543
+ [22]=>
544
+
545
+ string(15) "post_parent__in"
546
+
547
+ [23]=>
548
+
549
+ string(19) "post_parent__not_in"
550
+
551
+ [24]=>
552
+
553
+ string(5) "title"
554
+
555
+ [25]=>
556
+
557
+ string(6) "fields"
558
+
559
+ }
560
+
561
+ ["extra_query_vars"]=>
562
+
563
+ array(0) {
564
+
565
+ }
566
+
567
+ ["query_vars"]=>
568
+
569
+ array(0) {
570
+
571
+ }
572
+
573
+ ["query_string"]=>
574
+
575
+ string(0) ""
576
+
577
+ ["request"]=>
578
+
579
+ NULL
580
+
581
+ ["matched_rule"]=>
582
+
583
+ NULL
584
+
585
+ ["matched_query"]=>
586
+
587
+ NULL
588
+
589
+ ["did_permalink"]=>
590
+
591
+ bool(false)
592
+
593
+ }
594
+
595
+
596
+
597
+ ```

2

対策を追加

2020/08/13 03:14

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- WordPressでアクセスされたURLを定数としてdefineしたいです
5
+ WordPressでアクセスされたURLを定数として define したいです
6
-
7
-
8
-
6
+
7
+
8
+
9
- その適切な方法を知りたいのですが、最後に記載した【対策1】と【対策2】はどちらにすべきでしょうか
9
+ その適切な方法を知りたいのですが、最後に記載した【対策1,2,3】はどにすべきでしょうか
10
10
 
11
11
  また【よりよい対策】もあれば教えて頂きたいです
12
12
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  アクセスされたURLを次のように define しました
24
24
 
25
- しかし wp_enqueue_scripts で扱おうとすると、最後の行で「$data が見つからないエラーになる!」のです
25
+ しかし getData で扱おうとすると、最後の行で「$data が見つからないエラーになる!」のです
26
26
 
27
27
  アクセスしたのはフロントページなので「フロントページの場合の値」がほしいのです
28
28
 
@@ -44,11 +44,9 @@
44
44
 
45
45
 
46
46
 
47
- // JSにデータ
47
+ // $data 取得
48
-
49
- add_action( 'wp_enqueue_scripts', 'my_enqueue_main' );
48
+
50
-
51
- function my_enqueue_main(){
49
+ function getData(){
52
50
 
53
51
 
54
52
 
@@ -64,7 +62,7 @@
64
62
 
65
63
 
66
64
 
67
- // ページ名 ( $page_name ) に応じてJSにデータ
65
+ // ページ名 ( $page_name ) に応じて $data 取得
68
66
 
69
67
  if( $page_name == 'search' ){
70
68
 
@@ -76,7 +74,9 @@
76
74
 
77
75
  }
78
76
 
77
+
78
+
79
- wp_localize_script( 'data.js', 'data', $data ); // -> $data が見つからないエラーになる!
79
+ return $data; // -> $data が見つからないエラーになる!
80
80
 
81
81
  }
82
82
 
@@ -88,11 +88,7 @@
88
88
 
89
89
  ```php
90
90
 
91
- // JSにデータを出す
92
-
93
- add_action( 'wp_enqueue_scripts', 'my_enqueue_main' );
94
-
95
- function my_enqueue_main(){
91
+ function getData(){
96
92
 
97
93
 
98
94
 
@@ -130,19 +126,19 @@
130
126
 
131
127
  ###考えた対策
132
128
 
133
- これを避けるために、次のつの対策を考えました
129
+ 次の3つの対策を考えました
134
-
135
-
136
-
130
+
131
+
132
+
137
- 【対策1】条件分岐に /undefined/ を追加する
133
+ 【対策1】条件分岐に /undefined/ を追加
138
-
134
+
139
- つまり上記コードの if 次のようにすることです
135
+ 上記コードの if 次のように追加する方法、場当たり的に思いま
140
-
141
- これはだいぶ場当たり的に思うのですがいかがでしょうか
136
+
142
-
143
- ```php
137
+ ```php
144
-
138
+
139
+
140
+
145
- // ページ名 ( $page_name ) に応じてJSにデータ
141
+ // ページ名 ( $page_name ) に応じて $data 取得
146
142
 
147
143
  if( $page_name == 'search' ){
148
144
 
@@ -166,13 +162,43 @@
166
162
 
167
163
 
168
164
 
169
- wp_localize_script( 'data.js', 'data', $data );
165
+ return $data;
170
-
166
+
171
- ```
167
+ ```
168
+
172
-
169
+ 【対策2】初めに宣言
170
+
171
+ ifに一致しなくとも空文字を返す方法です
172
+
173
+ ```PHP
174
+
175
+ // 初めに空文字で宣言しておく
176
+
177
+ $data = '';
178
+
179
+
180
+
181
+ // ページ名 ( $page_name ) に応じて $data を取得する
182
+
183
+ if( $page_name == 'search' ){
184
+
185
+ $data = '検索ページの場合の値';
186
+
187
+ }elseif( $page_name == '' ){
188
+
189
+ $data = 'フロントページの場合の値';
190
+
191
+ }
192
+
193
+
194
+
195
+ return $data;
196
+
197
+ ```
198
+
173
- 【対策2】定数を変更
199
+ 【対策3】定数を変更
174
-
200
+
175
- つまり undefined のときは空文字する方法で、個人的にはこの方がいいかと思っています
201
+ undefined のときは空文字を定数にする方法で、個人的にはこの方がいいかと思っています
176
202
 
177
203
  ```php
178
204
 
@@ -180,7 +206,7 @@
180
206
 
181
207
  ```
182
208
 
183
- この2つしか対策が浮かびませんでしたが、【よりよい対策】もあれば教えて頂きたいです
209
+ この3つしか対策が浮かびませんでしたが、【よりよい対策】もあれば教えて頂きたいです
184
210
 
185
211
 
186
212
 

1

表記を修正

2020/08/12 08:57

投稿

ikemen
ikemen

スコア3

test CHANGED
File without changes
test CHANGED
@@ -156,9 +156,9 @@
156
156
 
157
157
 
158
158
 
159
- // undefined 用の if を追加
159
+ // /undefined/ 用の if を追加
160
160
 
161
- elseif( $page_name == 'undefined ' ){
161
+ elseif( $page_name == '/undefined/' ){
162
162
 
163
163
  return;
164
164
 
@@ -166,7 +166,7 @@
166
166
 
167
167
 
168
168
 
169
- wp_localize_script( 'data.js', 'data', $data ); // -> $data が見つからないエラーになる!
169
+ wp_localize_script( 'data.js', 'data', $data );
170
170
 
171
171
  ```
172
172