WordPressのマルチサイト運用でサイトを横断した検索
このoichinote.comでは、Wordpressで、マルチサイト運用をしています。サブディレクトリ名毎に、別のサイトになっているのです。サイトが違っても、同じテーマを使っているので、見た目の共通化ができています。
マルチサイト運用で困るのが、サイトを横断した検索です。通常の方法だと、サイト毎の検索しかできません。
サイトを横断した検索ができる次のプラグインを試してみました。
なんとか、動かす方法がわかりました。検索結果は、各サイトの"globalsearch"と言うページに出す物とします。
- テーマのテンプレートファイルに、検索窓のためのPHP文を追加
- 全サイトに、検索結果を表示するページを追加
- “Multisite Global Search"をネットワークで有効化
プラグインのページに書いてある方法そのままでは、使えませんでした。
1. テーマのテンプレートファイルに、検索窓のためのPHP文を追加
次の通りに、PHP文を追加します。
<?php Multisite_Global_Search::ms_global_search_vertical_form('globalsearch','','hide_options'); ?>
- 'globalsearch’ … 検索結果を表示する固定ページ名
- " … "だと投稿が対象(デフォルト)。’1’の場合だと、固定ページを検索対象する。
- 'hide_options’ … オプションの表示を抑制する。"だと、オプション表示(デフォルト)。
1番目のオプションで指定した固定ページ名’globalsearch’は、全サイトに必要です。
2番目のオプション’1’ですが、"でも、’1’でも、投稿も固定ページも検索対象になってしまっている様です。よくわかりません。
3番目のオプション’hide_options’を付けないと、オプションフォームが表示されます。
次のページで、知った方法です。
上記で追加するPHP文が、プラグインのページのままだと、次のエラーになってしまうのです。
追加するPHP文。
プラグインのページでは、次の2通りが書かれています。
- 縦型のフォームの場合
<?php Multisite_Global_Search::ms_global_search_vertical_form('globalsearch'); ?>
- 横型のフォームの場合
<?php Multisite_Global_Search::ms_global_search_horizontal_form('globalsearch'); ?>
このままだと、次のエラーが出ます。
Warning: Missing argument 2 for Multisite_Global_Search::ms_global_search_vertical_form(), called in /httpdir/wp-content/themes/your_theme/header.php on line 35 and defined in /httpdir/wp-content/plugins/multisite-global-search/inc/class.widgets.php on line 109 Warning: Missing argument 3 for Multisite_Global_Search::ms_global_search_vertical_form(), called in /httpdir/wp-content/themes/your_theme/header.php on line 35 and defined in /httpdir/wp-content/plugins/multisite-global-search/inc/class.widgets.php on line 109
“/httpdir"は、Wordpressをインストールしたディレクトリです。環境によって、違うと思います。
“your_theme"は、テーマ名です。これも、環境によって違うと思います。
“header.php"は、設置したテンプレートファイル名です。これも、どこに設置されているかで違います。
注目すべきは、冒頭の"Missing argument 2″です。どうも、引数が2つ足りないために、エラーになっている様です。
その為、上記の方法で、引数を2つ足しているのです。う〜ん。
2. 全サイトに、検索結果を表示するページを追加
全サイトに、’globalsearch’と言う固定ページを作ります。
そして、その中に、次のショートコードを書いておきます。
- 全文表示
[multisite_search_result]
- 抜粋版
[multisite_search_result excerpt="yes"]
トップサイト(親サイト)にだけあれば良いかと思ったら違いました。また、「excerpt="yes"」も、正しく動いているかどうか、不明です。
3. “Multisite Global Search"をネットワークで有効化
これで、"Multisite Global Search"をネットワークで有効化すると使える様になります。
でも、なぜか、表示結果がおかしいのです。<head>と</head>の間に、結果が含まれてしまっています。
よく調べてみたら、Wordpressの純正プラグイン"Jetpack by WordPress.com"と衝突していました。"Jetpack"を外すと、正常に表示されました。
でも、検索結果が多いと、表示が膨大になってしまいます。ちょっと使えない感じです。困った〜。
ディスカッション
コメント一覧
まだ、コメントがありません