WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう

WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう問題、以下のシンプルなコードを利用すると細かな難点は諸々とあるがとりあえずJavascriptは表示されないので、とりあえずこれを改造した。

WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう

↓Search.phpの内容(参考)

<h2><?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?>件</h2>
<!-- 投稿情報 loop -->
<?php if(have_posts()) : ?>
 <?php while(have_posts()):the_post() ?>
  <h3><?php the_title(); ?></h3>
  <div class="post">
   <?php if (has_post_thumbnail()) : ?>
    <p class="postThumbnail"><?php the_post_thumbnail(); ?></p>
   <?php endif; ?>
   <p><?php the_content('詳細はこちら'); ?></p>
  </div><!-- /post -->
 <?php endwhile; ?>
<?php else: ?>
 <div class="post">
  <p>申し訳ございません。
該当する記事がございません。</p>
 </div>
<?php endif; ?>


参考:検索結果テンプレート -search.php- _ WordPress – FindxFine
参考:WordPress 検索フォームを作成する _ プロカツ!
参考: 【サンプルコード付き!】wordpressで作られたサイトに検索機能を追加する方法 _ ジーニアスブログ – WEB制作会社ジーニアスウェブのお役立ちブログ

上記のコードを使うと検索結果に<P></P>タグが表示されてしまう問題が発生した。



PHPコードを下記のように変えると表示されなくなった。
<?php echo get_the_excerpt(); ?>でも良いらしい。

<?php the_excerpt(); ?>

↓からに変更

<?php remove_filter ('the_excerpt', 'wpautop'); //Pタグ削除?>
<?php the_excerpt(); ?>


参考:WordPress – 抜粋文からpタグを削除するget_the_excerpt() _ アトリエJ.

さらに全角スペース&半角スペースで検索した時に全件表示されてしまう問題を修正。



親テーマのfunctions.phpに以下のタグを追記。うちの環境(Luxeritas)では子テーマのfunctions.phpだと効かなかった。

// 空欄・スペース検索の結果を変更する関数(結果非表示)
function mycus_empty_and_blank_search_invalid_func( $search, \WP_Query $q ) {
 if ( $q->is_search() && $q->is_main_query() && ! $q->is_admin() ) {
  $s = $q->get( 's' );
  $s = trim( $s );
  if ( empty( $s ) ) {
   $search .=" AND 0=1 ";
  }
 }
 return $search;
}
add_filter( 'posts_search', 'mycus_empty_and_blank_search_invalid_func', 10, 2 );


参考:空欄検索・スペース検索を無効化する方法

以上の方法ではsearch.phpとsearchform.phpしか使わないので、以前作ったloop-thumbnail.phpが不要になった。

更新日:2024年6月15日