前提
wordpress内の検索機能で
検索にヒットしないフリーワード検索をかけるとループしてしまうエラーが起こる
実現したいこと
検索にヒットしないキーワードで検索かけたときに起こるループ処理を起こらなくしたい。
wordpressに検索機能を実装しました。
ここまで判明しているのは、ループが起きてしまうのは、検索結果が0件のものです。
検索結果が最低1つでもあるのもに関してはループ処理は出ていません。
条件文の処理として0件のものは”検索結果がありませんでした”と表示させています。
事実、”検索結果がありませんでした”とは表示されるもののループ処理が止まりません。
この場合、見るべきポイントとしては、どこになりますか?
urlを取得してきているjavascriptのファイルなのか。
検索結果を表示しているphpのファイルなのか。
はたまたどこか違う場所なのか。。。
解決方法、アプローチの仕方の見当がつかなくて困っています。
javascriptのコード//本来ならば $(".searchBtn").click(function(event) { keyword = $("#keyword").val() if(keyword.length > 0){ keyword_query = "keyword=" + keyword + "&"; } else{keyword_query = ""+ "&";} window.location.href = $(this).attr("host") +"?" + keyword_query;
php
1ソースコード 2<div class="result"> 3 <?php if(count($list)): ?> 4 <?php foreach($list as $l): ?> 5 <?php //var_dump(wp_get_post_terms($l["id"],"search-key-tag")[0]); ?> 6<a href="<?php echo $l['href']; ?>"> 7<?php if( preg_match( "/default.png/",$l['icatch'][0])):?> 8<img class="icatch" src="<?php echo get_template_directory_uri(); ?>/img/thumbnail.png" alt="<?php the_title();?>"> 9 <?php else:?> 10<img class="icatch" src="<?php echo $l['img'][0]; ?>" alt="<?php echo preg_replace("/(.+)/","",$l['title']); ?>"> 11 <?php endif;?> 12 <div class="txt"> 13 <ul class="area"> 14 <li><span><?php echo $l['area']; ?></span></li> 15 <li><h3><?php echo preg_replace("/(.+)/","",$l['title']); ?></h3></li> 16 <?php $common_cat_list = wp_get_post_terms($l["id"],"common-cat") ?> 17 <?php $facility_cat_text = "" ?> 18 <?php foreach ($common_cat_list as $key => $value): ?> 19 <?php //var_dump($key["parent"]); ?> 20 <?php if($value->parent == 15): ?> 21 <?php $facility_cat_text .= $value->name ."," ?> 22 <?php endif; ?> 23 <?php endforeach ?> 24 <?php //var_dump($facility_cat); ?> 25 <li><span>検索結果:</span><?php echo rtrim($facility_cat_text,",") ?></li> 26 <!-- <li><span>検索結果:</span><?php // echo $l['type']; ?></li> --> 27 <li> 28 <div class="bottom"> 29 <ul> 30 <?php $incidentals = wp_get_post_terms($l["id"],"search-key-tag") ?> 31<?php if(count($incidentals)): ?> 32 <?php foreach($incidentals as $i): ?> 33 <li class="setubi-icon"><?php echo $i->name; ?></li> 34 <?php endforeach; ?> 35 <?php endif; ?> 36 </ul> 37 <img src="<?php bloginfo('template_directory'); ?>/img/link-arrow.png" alt=""> 38 </div> 39 </li> 40 </ul> 41 </div> 42 </a> 43 44 <?php endforeach; ?> 45 46 <?php elseif($list==0): ?> 47 <p>検索結果はありませんでした//検索結果0でも表示されない</p> 48 <?php else: ?> 49 <p>検索結果はありませんでした//検索結果0のときに表示される</p> 50 <?php endif; ?> 51 </div> 52```phpここまで 53 54 55 56### 試したこと 57ループ処理を終わらせるために 58break; 59return; 60などを書き加えた。が変化なしでした。。。 61 62 63 64 65### 補足情報(FW/ツールのバージョンなど) 66wordpress ver4.9.8 67php 5.6 68jQuery 1.8.3
回答2件
あなたの回答
tips
プレビュー