【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

ご質問等ありましたら,下のフォームからお願いします.

 
   
Apache Chrome Chrome 拡張機能 CSS Git Google HTML javascript PageSpeed Insights PHP python SEO Windows WordPress xyzzy Youtube z-index アナリティクス ウェビナー エディタ サーチコンソール サーバー管理 スライダー セミナー タグマネージャー テレワーク デザイン データベース ネットワーク フォーム ページ閲覧解析 マーケティング リッチリザルト レスポンシブ レスポンシブ対応 ログ解析 ローカル環境構築 営業 実装
contact
Pagetop