WordPressのマルチサイト運用でサイトを横断した検索

2016年9月18日Web-log・ココログ関連,WordPress

このoichinote.comでは、Wordpressで、マルチサイト運用をしています。サブディレクトリ名毎に、別のサイトになっているのです。サイトが違っても、同じテーマを使っているので、見た目の共通化ができています。

マルチサイト運用で困るのが、サイトを横断した検索です。通常の方法だと、サイト毎の検索しかできません。

検索

サイトを横断した検索ができる次のプラグインを試してみました。

なんとか、動かす方法がわかりました。検索結果は、各サイトの"globalsearch"と言うページに出す物とします。

  1. テーマのテンプレートファイルに、検索窓のためのPHP文を追加
  2. 全サイトに、検索結果を表示するページを追加
  3. “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"を外すと、正常に表示されました。

でも、検索結果が多いと、表示が膨大になってしまいます。ちょっと使えない感じです。困った〜。

Posted by お市のかた