以前から固定ページに検索ページを作成したかった。
昔々、別テーマを使用していた時、メニューかなんかで「検索」を削除したらもうデフォルトであるはずの?(良く分からない)固定ページの検索ページが無くなってしまった。エクスポート・インポートでも引き継がれるらしかった。
やりにくいまま、あれから何年経った?
何かの時に一生懸命検索したが、一度削除したメニュー用のページは取り戻せないとか出ていた。。。とはうろ覚え。
だが、デフォルトでパッケージにsearch.phpは必ずあるし、任意で適用したテーマにもsearch.phpはある事が多い。
でも一番上のナビゲーションメニューに出すことが出来なかった。ここに入れられるのは固定ページだけ。
このテーマにはもともとsearch.phpが無いが、無くてもテーマによってはfunction.phpに何か書いてあることもある。
書いてあっても意味分からないから困る。
でもコーデックスにはちゃんと書いてあった。
コツコツやったらできた。
知っておくべきこと
異なる WordPress テーマは、異なるテンプレートファイルを有しています。search.php テンプレートファイルが含まれているテーマもあります。これは、「検索ページ」ではありません。検索結果を表示するページです。searchform.php というテンプレートファイルもあります。このテンプレートは、サイドバーに入れられていることがよくあり、検索ボックスフォームを生成します。テーマに無い場合は、デフォルトテーマからコピーすることができます。wordpress codexより引用
- テーマにpage.phpがあればそれをコピーし、loopを削除して以下★を入れる。私はテーマのpage.phpが無かったのでindex.phpを使用し、同様にループを削除し以下を入れた。
<?php get_search_form(); ?> - ファイル名はsearchpage.phpとする。上記引用文にもある通りsearch.phpは使ってはいけない。
- ページの先頭に以下★★を入れる。
<?php
/*
Template Name: Search Page
*/
?> - wp-content/themes/friday/にsearchpage.phpをアップ。
- ダッシュボードで固定ページを新規作成。本文には何も入れずに固定ページの属性==>テンプレート==>Search Pageを選択して保存。
- 外観==>メニュー==>ナビゲーションメニューに固定ページを追加。出来た。サイドのウィジェットに固定ページがある場合はウィジェットの編集で除外しておく。
★<?php get_search_form(); ?>
★★<?php
/*
Template Name: Search Page
*/
?>