[Cocoon]検索ボックスをヘッダーに表示する

Memo

前回に引き続き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の新バージョンとしてリリースしてくれた。

ヘッダーメニューに検索窓を追加したい
はじめて投稿させていただきます。よろしくお願いします。ヘッダーメニューに検索窓を追加したく、ネットを検索したところフィルターフックで実装するのが簡単そうでした。実装はできましたが、Cocoon 設定の「変更をまとめて保存」ができなくなりました。具体的には「変更をまとめて保存」ボタンを押した後に表示さ...

コードの最後にあるフィルターフックがまさにその機能なんだけど、何がすごいって、報告した翌日には原因調査と改修が完了して、しかもヘッダー以外のプレビューまで制御できるようになってた。有料サポートでもここまでできないでしょ。神様か。ますますこのテーマを好きになった。

コメント