投稿日:2017/10/27
「オリーブカートを使用しているwordpressの検索が商品しかヒットしないみたい」
とのことを受けて初めて知りました。 調べたところこれは正常な動きみたいです。
ディレクターさんにちょっとちょっとと、つっこまれたら
「問題ない」と答えてもらって大丈夫です。
オリーブカートを有効化すると
商品の中で検索するようになるみたいです。 具体的に言うと
wpのDB テーブルwp_postsのpost_typeが”cart“のものしか検索しないように
プラグイン上で記述しているようです。
(固定ページはpage、投稿ページはpostです。)
タイトルと本文に検索文字列が含まれるかどうかだけを調べているだけみたいなのですが
その検索文字列を検索するクエリを実行する前に
「post_typeがcart」の条件を追加しているみたいです。
とのことを受けて初めて知りました。 調べたところこれは正常な動きみたいです。
ディレクターさんにちょっとちょっとと、つっこまれたら
「問題ない」と答えてもらって大丈夫です。
オリーブカートを有効化すると
商品の中で検索するようになるみたいです。 具体的に言うと
wpのDB テーブルwp_postsのpost_typeが”cart“のものしか検索しないように
プラグイン上で記述しているようです。
(固定ページはpage、投稿ページはpostです。)
調査結果
wp-olivecart/olivecart.phpfunction search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set('post_type', array( 'cart' ) );
}
}
}
add_action('pre_get_posts','search_filter');
pre_get_posts
このフックはクエリ変数オブジェクトの生成後、実際にクエリが実行される前に呼び出されます通常の検索は
https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts
タイトルと本文に検索文字列が含まれるかどうかだけを調べているだけみたいなのですが
その検索文字列を検索するクエリを実行する前に
$query->set('post_type', array( 'cart' ) );
をセットして「post_typeがcart」の条件を追加しているみたいです。