【WordPress】リッチリザルト対応サイト内検索設置方法

最終更新日: 公開日: 2021年01月

サイト内検索を設定したのだが,ついでにリッチリザルト対応のサイトリンク検索ボックスにもしたので,役に立つこともあるだろうと備忘録としてまとめておく.


サーチコンソールに現れるサイトリンク検索ボックス

リッチリザルト対応のサイトリンク検索ボックスとは

サイトリンク検索ボックスとはなにかというと,Google で検索した結果のサマリーの中に表示されるそのサイトのサイト内検索ボックスのことである.
つまり,これも検索結果を豪華なものにするリッチリザルトの一種である.
他のリッチリザルト同様,目立つし,便利なものであるのでサイト内検索が存在するサイトであれば使うに越したことはない.

必要なもの

search.php
searchform.php

これだけ.

サイト内検索サンプルコード

検索フォーム

検索フォームに関しては以下のコードを searchform.php という名前でファイルを作る.

サイトリンク検索ボックスは,スキーマとしては
https://schema.org/SearchAction
を使う.

<div itemscope itemtype="https://schema.org/WebSite">
  <meta itemprop="url" content="<?php echo esc_url(home_url('/')); ?>"/>
  <form itemprop="potentialAction" itemscope itemtype="https://schema.org/SearchAction" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>">
    <meta itemprop="target" content="<?php echo esc_url(home_url('/')); ?>?s={s}"/>
    <input itemprop="query-input" type="text" name="s" id="s" placeholder="<?php if(!is_search()){ echo 'キーワード';} ?>" value="<?php if(is_search()){ echo get_search_query();} ?>"/>
    <button type="submit">ブログ内検索</button>
  </form>
</div>

そして,

<?php get_search_form(); ?>

を single.php など入れたいテンプレートの表示したい場所に挿入すればよい.

検索結果ページ

search.php はテーマに入っていると思うので,それを使えばよい.
抜粋すると以下のようになる.

get_search_form() も入れている.

<?php
  if (isset($_GET['s']) && empty($_GET['s'])) {
    $title = '';
  } else {
    $title = '「'.$_GET['s'] .'」の';
  };
?>
<h1><?php echo $title . '検索結果'; ?></h1> <!-- 記事タイトルを表示 -->
<?php get_search_form(); ?>
<?php if (have_posts()): ?>
<h2><?php
if (isset($_GET['s']) && empty($_GET['s'])) {
  echo '検索キーワード未入力';
} else {
  echo '「'.$_GET['s'] .'」の検索結果: '.$wp_query->found_posts .'件'; // 検索キーワードと該当件数を表示
}
?></h2>
<ul>
  <?php while(have_posts()): the_post(); ?>
  <li>
    <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
    <div>
      <?php echo get_the_excerpt(); ?>
    </div>
  </li>
<?php endwhile; ?>
</ul>
<?php
// Previous/next page navigation.
$paginationhtml = get_the_posts_pagination( array(
  'prev_text' => '前のページ',
  'next_text' => '次のページ'
));
echo preg_replace('/<h2 class="screen-reader-text">[^<]*<\/h2>/ui', '', $paginationhtml);
?>
<?php else: ?>
検索されたキーワードにマッチする記事はありませんでした
<?php endif; ?>

リッチリザルトテスト

埋め込んだ後は下記URLでテストするのを忘れないようにする.
リッチリザルトテスト(google)

 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.

 
   
contact
Pagetop