2007/12/23 日曜日

WordPress Search Everythingでタグを検索できない

カテゴリー: WordPress — admin @ 11:42:30 雨のち晴

WordPressは2.3以降、記事にタグをつけることができるようになった。
しかし、標準の検索機能ではこのタグまでは検索できない。
プラグインを探してみると、Search Everything というのがあった。検索範囲を広げる機能があり、このタグの検索にも対応している。
さっそく、ダウンロードしていつものように展開して、ディレクトリごとpluginディレクトリ下にアップロードした。管理画面で有効化したあと、タグを検索できるようにオプションを設定した。

ユーザ画面に戻り、漢字でタグを登録して、検索してみるが結果が表示されない。
日本語版を探したり、バージョンが高いものや、逆にひとつだけ落として試したみたが、まったく検索できない。海外で作成されたものにはよくあることなので、キーワードの扱いを確認することにした。

まずは、登録したタグがどこにあるかデータベースのテーブルの中を確認してみた。wp_termsに登録されていた。ここは問題なし。次に、プラグイン内の機能を利用してログを取得できるようにして、再度検索してみる。ログの中を見ると正常にSQLが生成されていて、問題なさそう。テーブルとSQLを見比べているうちに、slugを検索していることに気づいた。
小説は「%e5%b0%8f%e8%aa%ac」のように登録されている。半角英数字だと変換されないので slug内を検索してもうまくいくが、日本語では検索できない。原因がわかったので、
search_everything.phpの227行目あたりのfunction SE4_search_tags内の検索用のSQLをslugからnameに変更した。

$where .= ” OR ( tter.slug LIKE ‘%” . str_replace(’ ‘, ‘-’,$wpdb->escape($wp_query->query_vars['s'])) . “%’) “;
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 
$where .= ” OR ( tter.name LIKE ‘%” . str_replace(’ ‘, ‘-’,$wpdb->escape($wp_query->query_vars['s'])) . “%’) “;

再度、検索してみるとこんどはタグの中を検索して記事を表示できた。

コメントはまだありません »

コメントはまだありません。

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ

© 2003-2008 Yorinobu Nagata. This website powered by  Convert time: 0.224 sec.