WP Custom Fields Searchの改造をしました。
さぼてんさんのブログを参照してphpファイルの変更をしましたら
全角スペースを挟んだ複数語検索が可能になりました。
いじった部分は下記の通りです。
——————変更するファイル
wp-custom-fields-search/extra_search_fields.php
——————変更前
class WordsLikeComparison extends LikeComparison {
function addSQLWhere($field,$value){
$words = explode(” “,$value);
$like = array(1);
foreach($words as $word){
$like[] = $this->getLikeString($field,$word);
}
return “(“.join(” AND “,$like).”)”;
}
function describeSearch($value){
return sprintf(__(‘ contains “%1$s”‘,’wp-custom-fields-search’),join(‘”‘.__(” and “,’wp-custom-fields-search’).'”‘,explode(” “,$value)));
}
}
——————変更後
/* プラグイン「wp-custom-fields-search」ディレクトリ内「extra_search_fields.php」 */
class WordsLikeComparison extends LikeComparison {
function addSQLWhere($field,$value) {
$value = trim(mb_convert_kana($value,’s’,’UTF-8′));
$words = explode(” “,preg_replace(‘/\s+/u’, ‘ ‘, $value));
$like = array(1);
foreach($words as $word) {
$like[] = $this->getLikeString($field,$word);
}
return “(“.join(” AND “,$like).”)”;
}
function describeSearch($value){
$value = trim(mb_convert_kana($value,’s’,’UTF-8′));
return sprintf(__(‘ contains “%1$s”‘,’wp-custom-fields-search’),join(‘”‘.__(” and “,’wp-custom-fields-search’).'”‘,explode(” “,preg_replace(‘/\s+/u’, ‘ ‘, $value))));
}
}
——————注意する点
○変更前の行をうっかり多く削除してしまいサイト全体が表示されなくなりました。
FTPでWP Cusom searchのフォルダごと削除して再インストールで復旧しましたので
いじるときにはFTPソフトが必要です。
——————後日談
カスタマイズをするにつれてテーマのレイアウト崩れが出てしまいました。
いろいろ調整したのですが直りませんでしたので、入れ替えをすることになりました。
それに伴い、プラグイン、ウィジェットの再調整時に
custom fields searchの設定を確認したところ、検索がエラーになるので
見直しをしましたので追記を備忘録もかねて記します。
このcustom fields searchは、カスタマイズによって全角スペースをはさんだ
複数語検索も出来ますし、また、キーワード、カテゴリー、タグと
複数条件の検索も出来ます。
したがって、記事の検索の絞り込みが出来るわけです。
以前設定したときには各記事に[ ]で挟んだコードを張り付けました。
各記事ごとにcustom fields seatchの検索ウインドウをつけたのですが
今回はシンプルな記事にしたいと思いますので取り付けません。
以前はサイドバーのphpにタグを入れましたが今回はウィジェットのみで
設定できました。大分設定が簡単になりましたね。
- ウィジェットでの設定
- テキストキーワードの設定
- カテゴリーの設定
- タグの設定
もっと条件を設定できるようですが、今回はこれで充分かと思います。
WordPressは英語圏での設定を基本的に考えているようですので
漢字での検索、とくに全角スペースを挟んだ検索は
このcustom fields searchのカスタマイズ以外では出来ないかも知れません。
記事の絞り込みは特に便利な機能ではないかと思います。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー