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チャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。