以前から固定ページに検索ページを作成したかった。

昔々、別テーマを使用していた時、メニューかなんかで「検索」を削除したらもうデフォルトであるはずの?(良く分からない)固定ページの検索ページが無くなってしまった。エクスポート・インポートでも引き継がれるらしかった。

やりにくいまま、あれから何年経った?

何かの時に一生懸命検索したが、一度削除したメニュー用のページは取り戻せないとか出ていた。。。とはうろ覚え。

だが、デフォルトでパッケージに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
*/
?>