前回に引き続きWordPressのカスタマイズの備忘録。今回はCocoonの子テーマで検索ボックスをヘッダーのメニューに表示させるための方法を書く。
テーマのための関数 (functions.php)
以下のコードを追加する。なお、事前にCocoon 1.6.8以上にアップデートしておく必要がある。
//ヘッダーに検索ボックスを追加 add_filter('wp_nav_menu_items','add_search_box', 10, 2); function add_search_box($items, $args) { ob_start(); get_search_form(); $searchform = ob_get_contents(); ob_end_clean(); $items .= '<li>' . $searchform . '</li>'; return $items; } //Cocoon設定にてヘッダーのプレビューを無効化(検索ボックス対策) add_filter('cocoon_setting_preview_header', '__return_false');
ちなみに、うちのサイトは検索ボックス内の文字列を英語に変えたくて$searchform
のところを以下のようにしている。
$searchform = str_replace('サイト内を検索', 'Search', ob_get_contents());
余談
これ、もともとの(1.6.8未満の)Cocoonではできなかった。いや正確に言えば、検索ボックスの表示自体はできるけど、なぜかCocoon設定の「変更をまとめて保存」ができなくなるという事象を伴うものだった。
それを数ヶ月前にCocoonのフォーラムに報告している方がいて、一度は原因不明で流れたものを、諦めの悪い自分が色々原因切り分けをして改めて報告したら、Cocoon作者のわいひらさんがわざわざ改修して新バージョンとしてリリースしてくれた。
ヘッダーメニューに検索窓を追加したい
はじめて投稿させていただきます。よろしくお願いします。ヘッダーメニューに検索窓を追加したく、ネットを検索したところフィルターフックで実装するのが簡単そうでした。実装はできましたが、Cocoon 設定の「変更をまとめて保存」ができなくなりまし...
コードの最後にあるフィルターフックがまさにその機能なんだけど、何がすごいって、報告した翌日には原因調査と改修が完了して、しかもヘッダー以外のプレビューまで制御できるようになってた。有料サポートでもこんな対応できないでしょ。神様か。ますますこのテーマを好きになった。