WordPress 同じページに検索を2つ設置する場合

※ アフィリエイト広告を利用しています

WordPressでは以下のタグを入れると標準の検索フォームを設置することができます。
<?php get_search_form(); ?>
このタグは下記のようなHTMLになります。

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div>
<label class="screen-reader-text" for="s">検索</label>
<input type="text" value="" name="s" id="s">
<input type="submit" id="searchsubmit" value="検索">
</div>
</form>

上記タグを見るとidが使われているため、同じページに2つ設置するとエラーになります。
そこで下記の方法で設置するとidを使わずに設置することができます。

searchform.phpの設置

カスタマイズでフォームを作ります。
その方法はsearchform.phpというphp作成します。
idを使わずにclassで対応すると複数設置が可能です。
下記が参考例文です。
デザインに合わせてボタンに変更したり、クラスを追加したりして自由に変更できます。

<form role="search" method="get" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<label class="screen-reader-text" for="s">検索</label>
<input type="text" placeholder="検索" value="<?php echo get_search_query(); ?>" name="s" />
<input type="submit" class="searchsubmit" value="検索" />
</form>

制作の際、気をつけないといけないことは以下の3点です。

  • formのaction属性にはWordpressのホームURLを設定すること
  • formのmethodはgetにすること
  • inputのname属性をsに設定

searchform.phpを制作すると、タグを記載したHTMLがこちらに置き換わります。

function.phpにて設定する場合

以下のコードを追加すると、検索フォームをHTML5に対応し、idがなくなりclassでの表示になります。
そのため、検索フォームを同じページに複数設置してもエラーになることはありません。

add_theme_support( 'html5', array( 'search-form' ) );

こちらのほうがお手軽で簡単かもしれません。

お好みに応じて使い分けると良いかもしれません。

詳しくは WordPress Codex に記載してますのでご確認ください。

web制作Wordpress
noteをフォローする
note

コメント

タイトルとURLをコピーしました