フロントエンドこそ覚えたい:WordPressの投稿の絞り込みに出てくるcompareってなに?①
バレンタインですね!
私はチョコが大好きなので、毎年もらう側だったらなぁ・・・と周りの男性陣をうらやむばかりです。
先日のWordPressでカスタムフィールドを使って、特定の記事だけを除外することができた! | バシャログ。でも使った「compare」ですが、あまり詳しくないのでこの機会に調べてみることにしました。 今回はバシャログ。メンバーを紹介する投稿を絞り込みするという想定です。
'=':一致
例)フロントエンドエンジニアの投稿のみ表示
※データが何でもOK
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => 'front-end', //フロントエンドエンジニアに
'compare' => '=' //一致したら表示
)
)
);
- フロントエンドエンジニア:kouraku
- フロントエンドエンジニア:ishida
- フロントエンドエンジニア:yanagimachi
の紹介記事が表示されました。
フロントエンドの人だけ表示されました。
'!=':一致しない
例)フロントエンドエンジニア以外の投稿を表示
※データが何でもOK
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => 'front-end', //フロントエンドエンジニアに
'compare' => '!=' //一致しなかったら表示
)
)
);
- バックエンドエンジニア:kimoto
- バックエンドエンジニア:tanaka
- バックエンドエンジニア:fukasawa
- バックエンドエンジニア:kagata
- バックエンドエンジニア:fujihara
- デザイナー:bashalog
の紹介記事が表示されました。
フロントエンド以外の人だけ表示されました。
ここまでは、jobが各ユーザに1つずつの場合使えます。
チェックボックスなどで複数設定できる仕様の場合はどうすればいいでしょうか?
ishidaさんの紹介記事をデザイナーとフロントエンドエンジニアの兼務に変更したとします。
'LIKE':含む
例)jobが複数あっても、フロントエンドエンジニアの投稿を表示
※データは文字のみ
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => 'front-end', //フロントエンドエンジニアを
'compare' => 'LIKE' //含んだら表示
)
)
);
- フロントエンドエンジニア:kouraku
- デザイナー&フロントエンドエンジニア:ishida
- フロントエンドエンジニア:yanagimachi
の紹介記事が表示されました。
フロントエンドだけ、兼務の人が表示されました。
'NOT LIKE':含まない
例)jobが複数あっても、フロントエンドエンジニア以外の投稿を表示
※データは文字のみ
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => 'front-end', //フロントエンドエンジニアを
'compare' => 'NOT LIKE' //含まなかったら表示
)
)
);
- バックエンドエンジニア:kimoto
- バックエンドエンジニア:tanaka
- バックエンドエンジニア:fukasawa
- バックエンドエンジニア:kagata
- バックエンドエンジニア:fujihara
- デザイナー:bashalog
の紹介記事が表示されました。
フロントエンドだけ、兼務の人は表示されません。
'IN':配列のいずれかを含む
例)デザイナーかフロントエンドエンジニアの投稿を表示
※データが何でもOK
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => array('designer','front-end'), //デザイナーかフロントエンドエンジニアを
'compare' => 'IN' //含んだら表示
)
)
);
- フロントエンドエンジニア:kouraku
- デザイナー&フロントエンドエンジニア:ishida
- フロントエンドエンジニア:yanagimachi
- デザイナー:bashalog
の紹介記事が表示されました。
デザイナーだけ、フロントエンドだけ、兼務の人が表示されます。
'NOT IN':配列のいずれも含まない
例)デザイナーとフロントエンドエンジニア以外の投稿を表示
※データが何でもOK
$args = array(
'post_type' => 'post', //投稿で
'meta_query' => array(
array(
'key' => 'job', //フィールド名がjobで
'value' => array('designer','front-end'), //デザイナーとフロントエンドエンジニアを
'compare' => 'NOT IN' //含まなかったら表示
)
)
);
- バックエンドエンジニア:kimoto
- バックエンドエンジニア:tanaka
- バックエンドエンジニア:fukasawa
- バックエンドエンジニア:kagata
- バックエンドエンジニア:fujihara
の紹介記事が表示されました。
デザイナーだけ、フロントエンドだけ、兼務では表示されません。
次回は数値や日時に使うcompareを紹介します。