WordPress の AMP ページに検索フォームを設置する方法
SSL 化が必須
WordPress の AMP ページに、検索フォームを設置する方法の紹介です。
ただし、AMP に検索フォームを設置できるのは、SSL に対応したサイトのみです。
コンポーネントの読み込み
AMP で検索フォームを設置するには、amp-form を使用します。
まずは、<head>
内に <script>
タグを追加し、amp-form を使えるようにします。
<script
async
custom-element="amp-form"
src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
テンプレートの作成
次に、検索フォームのテンプレートを作成します。
WordPress の検索フォームは、searchform.php で作るのが一般的です。searchform.php に、このようなコードを追加します(HTML は一例です)。
<form method="get"
action="<?php echo home_url( '/' ); ?>"
target="_top">
<label>
<input type="search"
title="サイト内を検索"
placeholder="サイト内を検索"
value="<?php the_search_query(); ?>"
name="s" />
</label>
<input type="submit"
value="検索" />
</form>
AMP 用の検索フォームで特徴的なのが、3 行目の target="_top"
が必須であること。それ以外は、通常ページの検索フォームと変わりません。
searchform.php だけで通常ページと AMP ページの検索フォームを用意する場合は、条件分岐を使えばいいはずです。
<form method="get"
action="<?php echo home_url( '/' ); ?>"
<?php if ( is_amp() ) {
echo 'target="_top"';
} ?>
>
<label>
<input type="search"
title="サイト内を検索"
placeholder="サイト内を検索"
value="<?php the_search_query(); ?>"
name="s" />
</label>
<input type="submit"
value="検索" />
</form>
AMP ページの判定には、is_amp()
を使っています。この条件分岐タグは、サイトで使っている条件分岐タグへの変更が必要です。
これで、AMP ページへの検索フォームの設置は完了です。
Google 検索の「特定のサイトを検索する」
Google 検索の手法の 1 つに「特定のサイトを検索する」があります。Google の検索ページで、サイト URL またはドメインの前に site: を付ける方法です。
このブログであれば、site:https://firstlayout.net/
、または site:firstlayout.net
と Google で検索します。すると、Google の検索結果に表示されるのは、このブログのコンテンツのみです。
また、site:firstlayout.net AMP
と検索すれば、このブログ内の AMP に関係のあるコンテンツが表示されます。
この「特定のサイトを検索する」は、サイトに設置する検索フォームに仕込めます。
実装するコードの一例は、下記のとおりです。実装後は、サイト内の検索フォームに語句を入力し検索すると Google 検索に移動します。target="_top"
を削除すれば、通常ページでも実装できます。
<form method="get"
action="//www.google.com/search"
target="_top">
<input type="search"
title="サイト内を検索"
placeholder="サイト内を検索"
name="q" />
<input name="as_sitesearch"
value="<?php echo home_url( '/' ); ?>"
type="hidden" />
<input type="submit"
value="検索" />
</form>
2 行目の action
で、Google 検索の URL を指定します。この指定で、サイト内の検索フォームから Google 検索に移動できます。
また、7 行目の name には、q
を指定します。
さらに、8 行目の name="as_sitesearch"
の指定により、「特定のサイトを検索する」が使えるようになります。
9 行目の value
は、特定のサイトの指定です。サイトの URL、またはドメインを指定します(上記コードでは、サイト URL を指定しています)。
メリット・デメリット
「特定のサイトを検索する」のメリットとデメリットをいくつか挙げてみます。
メリットは、このようなものです。
- Google 検索は優秀
- ユーザーは使い慣れている Google 検索を使える
- 通常ページにも AMP ページにも導入できる
- インデックスされていればコメント欄も検索対象になる
一方、デメリットは、このようなものです。
- インデックスされたコンテンツしか検索結果に表示されない
- 検索結果ページはカスタマイズができない
- 一旦サイトの外に出るため、ユーザーはそのまま帰ってこないかもしれない
- 通常の Google の検索結果内に検索ボックスが表示されている場合は、検索ボックスでサイト独自のサイト内検索システムが使えない
デメリットの最後の項目の「検索ボックス」の詳細は、サイトリンク検索ボックスは構造化データをマークアップしても表示できない。すでに表示できているサイトにのみ有効 をご参考ください。
デメリットが気になる場合は、Custom Search JSON API の使用を検討してもいいかもしれません。PHP 用のライブラリとして、Google APIs Client Library for PHP があります。