上へ戻る

【まとめ】WordPressのカスタムフィールド検索時に使えるcompare一覧。

Pocket

まとめ:Wordpressでget_posts+カスタムフィールドの検索一覧。で、WordPressでget_postsのパラメータ指定して、色々な検索条件で検索できることをまとめました。

検索方式の一つにcompareというパラメーターを使って検索できる方法も書いたのですが、これが結構便利なんです。
いあゆるLIKEや>などSQLのSELECT文と同様の検索ができるといったもの。カスタムフィールドでデータの型をあわせる必要がありますがそれができていればcompareで情報を引き出してくることができます。

ちょくちょく使うのに、忘れてしまい前のデータとかを探してしまうため自分用にもまとめてみました。


compareの使い方


compareは主にカスタムフィールドの検索内容の下に記述します。

$args = array(
'post_type'=>'post',
'post_status'=>'publish',
'posts_per_page'=>5,
'meta_key' => 'キー名',
'meta_value' => '検索内容',
'compare'=>'>'
);

上はフィールド内容に検索内容より大きいものを見つけています。
条件を変える場合は’compare’=>’内容’の内容を下の表にしたがって変えればその検索内容で検索できます。




LIKEや>などのcompareの種類

ではそんな便利なcompareの種類のまとめを見てみましょう。

種類内容
=検索内容と一致(例:検索内容:りんご、フィールド:りんご)
!=検索内容と一致しない(例:検索内容:りんご、フィールド:りんご以外のフィールド)
>検索内容より大きい(例:検索内容:10、フィールド:11以上)
>=検索内容以上(例:検索内容:10、フィールド:10位上)
<検索内容より小さい(例:検索内容:5、フィールド:4以下)
<=検索内容以下(例:検索内容:5、フィールド:5以下)
LIKE検索内容が含まれている(例:検索内容:バナナ、フィールド:バナナが一部でも含まれているフィールド)
NOT LIKE検索内容が含まれていない(例:検索内容:バナナ、フィールド:バナナが一部でも含まれていないフィールド)
IN配列で指定した内容が一部でも含まれている(例:検索内容:りんご、バナナ、もも、フィールド:検索配列が一部でも含まれているフィールド)
NOT IN配列で指定した内容が一部でも含まれていない(例:検索内容:りんご、バナナ、もも、フィールド:検索配列が一部でも含まれていないフィールド)
BETWEEN指定した数字の範囲内
NOT BETWEEN指定した数字の範囲外
NOT EXISTS要素が入っていない

MYSQLでのSELECT文を使ったことがある人ならなんとなくわかるかと思います。
個人的にはLIKEが結構使えたり。(文字の中で一部含まれているかどうかの検索)



複数の条件を絡めた場合のcompareの記述方法



複数検索する場合はこちら。

$args = array(
'post_type'=>'post',
'post_status'=>'publish',
'posts_per_page'=>5,
'meta_query' => array(
array('key'=>'キー名','value'=>検索内容,'comapre'=>'内容'),
array('key'=>'キー名','value'=>検索内容,'comapre'=>'内容'),
array('key'=>'キー名','value'=>検索内容,'comapre'=>'内容')
         )
);

カスタムフィールドで入れた情報を一覧にしたり比較したりする場合に便利なcompare。

普通のWEBサイトではあまり使わないかもしれませんが、使いたい場合にこれ以上にシンプルで最適な方法もなかなかないので知っておくと後々便利かも。です。


あわせて読みたいお勧め記事


    Fatal error: Uncaught Error: Call to undefined function split() in /home/japanese2017/start-now.link/public_html/100/wp-content/themes/basetheme/single.php:74 Stack trace: #0 /home/japanese2017/start-now.link/public_html/100/wp-includes/template-loader.php(74): include() #1 /home/japanese2017/start-now.link/public_html/100/wp-blog-header.php(19): require_once('/home/japanese2...') #2 /home/japanese2017/start-now.link/public_html/100/index.php(17): require('/home/japanese2...') #3 {main} thrown in /home/japanese2017/start-now.link/public_html/100/wp-content/themes/basetheme/single.php on line 74