質問編集履歴

1

文章修正と情報追記

2021/11/09 16:55

投稿

mochitapi
mochitapi

スコア0

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(document).ready(function($) {
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
- type: "POST",
455
+          type: "GET",
382
-
456
+
383
- url: ad_url.ajax_url,
457
+ url: ad_url.ajax_url,
384
-
458
+
385
- data: { 'action' : 'my_action' } // 「wp_ajax_*」の「*」がaction名となる
459
+ data: formData,
386
-
460
+
387
- }).done(function(data){
461
+ processData: false,
388
-
462
+
389
- console.log(data);
463
+ contentType: false,
390
-
391
- console.log("done...");
464
+
392
-
393
- }).fail(function(XMLHttpRequest, textStatus, error){
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
- console.log(error);
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