WordPressの検索フォームをカスタマイズする
わたしはWordPressでこのブログを立ち上げるとともに、Webを本格的に勉強しはじめました。当時はフォームが全然分からなくて、検索フォームも「わかんないけどとりあえず動いたからこれで!」って感じでしたw やっと分かるようになって整理したのでまとめてみます。
デフォルトの形を見てみる
WordPressでは検索フォームを出力してくれるテンプレートタグが存在していて、
<?php get_search_form(); ?>
このように書けば、テーマに searchform.php がある場合はそちらを、そうでない場合はこのように出力されます。(このブログでは searchform.php は作っていません。)
デフォルト
<form role="search" method="get" id="searchform" class="searchform" action="<?php echo 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 や class がたくさんついていますね。最初はこのあたりが全ッ然わからなくて、いろんなブログのソースを拝見して、見よう見まねでツギハギ状態でした…。。
このコードを元にCSSを書いてカスタマイズしていましたが、せっかくの自作テーマなんだし、もっとシンプルな記述にしても良さそうだな、と思ってやってみました。
カスタム
<form method="get" action="<?php echo home_url('/'); ?>"> <div> <label>検索:</label> <input type="text" name="s" /> <input type="submit" value="検索" /> </div> </form>
必要なのは、GET変数で http://xxx.com/?s=検索ワード という形にすること。
1行目のform method="get"
と、4行目のinput type="text"
の名前をname="s"
としておきます。
検索フォームは、ブログのホームページに GET を投げることに注意してください。入力テキストフィールドの名前は s にして、上述の例のように label を必ず含めてください。
Codexにこのように書いてありましたのでラベルも入れておきます。また、
form要素には、インライン要素であるinput要素を直接記述できません。必ずdiv要素などのブロック要素で内包するようにしましょう。
そうだったのか…!今まで結構直接書いた経験が(;゚д゚)
上記の記述で、このような形になります。(このブログで記述したキャプチャです。テキストボックスやsubmitボタンにはデフォルトのCSSが適用されています。)
使用例
現在このブログで使っている検索フォームです。テキストボックスとsubmitボタンの両方を画像で置き換えています。ヘッダーとフッターの2箇所に使用しています。
<form method="get" class="searchform" action="<?php echo home_url('/'); ?>"> <div> <label>検索:</label> <input type="text" name="s" /> <input type="submit" value="" /> </div> </form>
先述のコードをベースに、formにクラスを付け、submitボタンの中身を空にしています。(空にしないと画像の上に文字が出てしまうので)
.searchform label{display: none;} .searchform input[type="text"]{ float: left; width: 100px; height: 26px; padding: 0 30px 0 10px; background: url(images/searchtext.png) no-repeat; border: none; /* デフォルトCSSリセット */ } .searchform input[type="submit"]{ float: left; width: 19px; height: 22px; margin: 1px 0 0 -28px; padding: 0; background: url(images/searchicon.png) no-repeat; border: none; /* デフォルトCSSリセット */ box-shadow: none; /* デフォルトCSSリセット */ } .searchform input[type="submit"]:hover{ filter: alpha(opacity=80); /* マウスホバーでちょっと薄くする */ -moz-opacity: 0.80; opacity: 0.80; }
CSSはこんな感じ。それぞれ画像の大きさに合わせて縦横の幅を指定して、ボタン画像の左マージンをマイナスにすることで、重ねています。元々のformのCSSをリセットするための記述がありますが、ここはテーマによって違うと思います。
以上です!どこか変なところがありましたらご指摘いただけたら嬉しいですー!
1件のピンバック
[…] https://ateitexe.com/wordpress-searchform-customize/ […]
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。