質問編集履歴
1
文章修正と情報追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,9 +34,25 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
+
流れとしては、
|
38
|
+
|
39
|
+
1、custom-search.phpで記事表示と検索
|
40
|
+
|
41
|
+
2、function.phpでajaxの読み込みとワードプレス用のショートコード[search]の作成
|
42
|
+
|
43
|
+
3、search.jsでajaxのプログラム
|
44
|
+
|
45
|
+
4、固定ページで全てを表示
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
このような流れです。
|
50
|
+
|
51
|
+
|
52
|
+
|
37
53
|
該当ソースコードも貼りますので、
|
38
54
|
|
39
|
-
有識者の方がいらっしゃれば何か助言をくださいませ
|
55
|
+
有識者の方がいらっしゃれば何か助言をくださいませんか?
|
40
56
|
|
41
57
|
|
42
58
|
|
@@ -44,7 +60,9 @@
|
|
44
60
|
|
45
61
|
|
46
62
|
|
47
|
-
|
63
|
+
参考ソースコードは下記です。
|
64
|
+
|
65
|
+
https://webfun-style.com/wordpress-custom-search/
|
48
66
|
|
49
67
|
|
50
68
|
|
@@ -338,6 +356,48 @@
|
|
338
356
|
|
339
357
|
```
|
340
358
|
|
359
|
+
// ショートコードで絞り込み検索を設置する関数
|
360
|
+
|
361
|
+
function shortcode_search() {
|
362
|
+
|
363
|
+
ob_start();
|
364
|
+
|
365
|
+
get_template_part('custom-search');
|
366
|
+
|
367
|
+
return ob_get_clean();
|
368
|
+
|
369
|
+
}
|
370
|
+
|
371
|
+
add_shortcode('search', 'shortcode_search');
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
// ajax読み込み
|
376
|
+
|
377
|
+
function my_enqueue() {
|
378
|
+
|
379
|
+
// 特定のページのみで読み込む
|
380
|
+
|
381
|
+
if ( is_page( 'dounyuuzirei' ) ) {
|
382
|
+
|
383
|
+
// Ajaxの処理を書いたjsの読み込み
|
384
|
+
|
385
|
+
wp_enqueue_script( 'ajax-script', get_stylesheet_directory_uri().'/search.js', array('jquery'), null, true );
|
386
|
+
|
387
|
+
// 「ad_url.ajax_url」のようにしてURLを指定できるようになる
|
388
|
+
|
389
|
+
wp_localize_script( 'ajax-script', 'ad_url',array( 'ajax_url' => admin_url( 'admin-ajax.php') ) );
|
390
|
+
|
391
|
+
}
|
392
|
+
|
393
|
+
}
|
394
|
+
|
395
|
+
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
|
396
|
+
|
397
|
+
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
|
398
|
+
|
399
|
+
|
400
|
+
|
341
401
|
// Ajaxで検索結果を表示する関数
|
342
402
|
|
343
403
|
function custom_search() {
|
@@ -374,27 +434,69 @@
|
|
374
434
|
|
375
435
|
```
|
376
436
|
|
377
|
-
jQuery(
|
437
|
+
jQuery(function($){
|
438
|
+
|
378
|
-
|
439
|
+
function customSearch(){
|
440
|
+
|
441
|
+
// 1. フォームのデータを生成
|
442
|
+
|
443
|
+
var form = $('#search-result form').get()[0];
|
444
|
+
|
445
|
+
var formData = new FormData(form);
|
446
|
+
|
447
|
+
formData.append('action', 'custom_search');
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
// 2. Ajaxを行う
|
452
|
+
|
379
|
-
$.ajax({
|
453
|
+
$.ajax({
|
380
|
-
|
454
|
+
|
381
|
-
|
455
|
+
type: "GET",
|
382
|
-
|
456
|
+
|
383
|
-
url: ad_url.ajax_url,
|
457
|
+
url: ad_url.ajax_url,
|
384
|
-
|
458
|
+
|
385
|
-
data:
|
459
|
+
data: formData,
|
386
|
-
|
460
|
+
|
387
|
-
|
461
|
+
processData: false,
|
388
|
-
|
462
|
+
|
389
|
-
con
|
463
|
+
contentType: false,
|
390
|
-
|
391
|
-
|
464
|
+
|
392
|
-
|
393
|
-
|
465
|
+
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
466
|
+
|
394
|
-
|
467
|
+
alert("ロード失敗");
|
468
|
+
|
469
|
+
console.log("XMLHttpRequest : " + XMLHttpRequest.status); //HTTPリクエストのステータス取得
|
470
|
+
|
471
|
+
console.log("textStatus : " + textStatus); //タイムアウト、パースエラー等のエラー情報
|
472
|
+
|
473
|
+
console.log("errorThrown : " + errorThrown.message); //例外情報の取得
|
474
|
+
|
475
|
+
},
|
476
|
+
|
477
|
+
success: function(data){
|
478
|
+
|
479
|
+
$('#search-result').prop('outerHTML', data);
|
480
|
+
|
481
|
+
$('.submit-button').attr('type', 'button');
|
482
|
+
|
483
|
+
}
|
484
|
+
|
485
|
+
});
|
486
|
+
|
487
|
+
return false;
|
488
|
+
|
489
|
+
};
|
490
|
+
|
491
|
+
|
492
|
+
|
493
|
+
// 3. クリックイベントの設定
|
494
|
+
|
495
|
+
$('.submit-button').attr('type', 'button');
|
496
|
+
|
497
|
+
$(document).on('click', '.submit-button', function(){
|
498
|
+
|
395
|
-
|
499
|
+
customSearch();
|
396
|
-
|
397
|
-
console.log(XMLHttpRequest.responseText);
|
398
500
|
|
399
501
|
});
|
400
502
|
|
@@ -402,76 +504,6 @@
|
|
402
504
|
|
403
505
|
|
404
506
|
|
405
|
-
jQuery(function($){
|
406
|
-
|
407
|
-
function customSearch(){
|
408
|
-
|
409
|
-
// 1. フォームのデータを生成
|
410
|
-
|
411
|
-
var form = $('#search-result form').get()[0];
|
412
|
-
|
413
|
-
var formData = new FormData(form);
|
414
|
-
|
415
|
-
formData.append('action', 'custom_search');
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
// 2. Ajaxを行う
|
420
|
-
|
421
|
-
$.ajax({
|
422
|
-
|
423
|
-
type: "GET",
|
424
|
-
|
425
|
-
url: ad_url.ajax_url,
|
426
|
-
|
427
|
-
data: formData,
|
428
|
-
|
429
|
-
processData: false,
|
430
|
-
|
431
|
-
contentType: false,
|
432
|
-
|
433
|
-
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
434
|
-
|
435
|
-
alert("ロード失敗");
|
436
|
-
|
437
|
-
console.log("XMLHttpRequest : " + XMLHttpRequest.status); //HTTPリクエストのステータス取得
|
438
|
-
|
439
|
-
console.log("textStatus : " + textStatus); //タイムアウト、パースエラー等のエラー情報
|
440
|
-
|
441
|
-
console.log("errorThrown : " + errorThrown.message); //例外情報の取得
|
442
|
-
|
443
|
-
},
|
444
|
-
|
445
|
-
success: function(data){
|
446
|
-
|
447
|
-
$('#search-result').prop('outerHTML', data);
|
448
|
-
|
449
|
-
$('.submit-button').attr('type', 'button');
|
450
|
-
|
451
|
-
}
|
452
|
-
|
453
|
-
});
|
454
|
-
|
455
|
-
return false;
|
456
|
-
|
457
|
-
};
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
// 3. クリックイベントの設定
|
462
|
-
|
463
|
-
$('.submit-button').attr('type', 'button');
|
464
|
-
|
465
|
-
$(document).on('click', '.submit-button', function(){
|
466
|
-
|
467
|
-
customSearch();
|
468
|
-
|
469
|
-
});
|
470
|
-
|
471
|
-
});
|
472
|
-
|
473
|
-
|
474
|
-
|
475
507
|
|
476
508
|
|
477
509
|
```
|
@@ -480,7 +512,11 @@
|
|
480
512
|
|
481
513
|
|
482
514
|
|
515
|
+
ajaxの書き方について検索
|
516
|
+
|
483
|
-
こ
|
517
|
+
400エラーが起こる原因を調査し、
|
518
|
+
|
519
|
+
色々試したが、原因解決に至らず
|
484
520
|
|
485
521
|
|
486
522
|
|