※社内専用

オリーブカート使用時のwpの検索機能について

  • HOME
  • EPRESS-BS
  • オリーブカート使用時のwpの検索機能について
「オリーブカートを使用しているwordpressの検索が商品しかヒットしないみたい」
とのことを受けて初めて知りました。

調べたところこれは正常な動きみたいです。
ディレクターさんにちょっとちょっとと、つっこまれたら
「問題ない」と答えてもらって大丈夫です。
オリーブカートを有効化すると
商品の中で検索するようになるみたいです。 具体的に言うと
wpのDB テーブルwp_postsのpost_typeが”cart“のものしか検索しないように
プラグイン上で記述しているようです。
(固定ページはpage、投稿ページはpostです。)

調査結果

wp-olivecart/olivecart.php
function 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」の条件を追加しているみたいです。