WordPressでカスタムフィールドの全文一致、中間一致、前方一致、後方一致検索

作成日:

タイトル通り。
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...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。