WordPressでカスタムフィールドの全文一致、中間一致、前方一致、後方一致検索
作成日:
2020年12月30日
タイトル通り。
WordPressのmeta_queryを用いてカスタムフィールドの値を検索する際に、全文一致、中間一致、前方一致、後方一致を実装する方法です。
コード
PHP
/**
* $meta_key: 検索したいカスタムフィールドキー.
* $meta_value:検索ワード.
*/
// 全文検索.
array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $meta_key,
'value' => $meta_value,
'compare' => '='
),
),
);
// 中間一致.
array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $meta_key,
'value' => $meta_value,
'compare' => 'LIKE'
),
),
);
// 前方一致.
array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $meta_key,
'value' => '^' . preg_quote( $meta_value ),
'compare' => 'REGEXP'
),
),
);
// 後方一致.
array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => $meta_key,
'value' => preg_quote( $meta_value ) . '$',
'compare' => 'REGEXP'
),
),
);
全文一致はcompare => '='
で。
中間一致はcompare => 'LIKE'
で。
前方一致と後方一致は正規表現を使ってcompare => 'REGEXP'
で。
その際、検索ワードを一応preg_quoteしておいてそれぞれ^
と$
を追加。
多分これで大丈夫なのではなかろうかと。
物草 灸太郎
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
関連投稿
Loading...
コメントをどうぞ