「注目の記事」とか「PICK UP!」とか、目立たせる記事を大きく出して、一覧には出さない、ってよく使う処理だと思います。
専用のタクソノミー、タームで処理した方が簡単な場合もありますが、タグリストの処理が必要になります。
また、カスタムフィールドにしておけばMW WP Formにも応用しやすかったりするので使い分けたいところです。
カスタムフィールドでの絞り込み
$args = array(
'post_type' => 'news',
'posts_per_page' => '8',
'meta_query' => array(
array(
'key' => 'pick_up',
'value' => 'true',
'compare' => 'LIKE'
)
)
);
$query = new WP_Query( $args );
if( $query->have_posts() ){
while( $query->have_posts() ){
$query->the_post();
the_title();
}
wp_reset_postdata();
}
カスタムフィールド名:pick_up
カスタムフィールド値:true
比較方法:LIKE
カスタムフィールド「pick_up」にチェックが入った記事タイトルを出せ、という意味です。
カスタムフィールドでの除外
絞り込みはLIKEで出来ますが、除外はNOT LIKEだけではNG。
「pick_up」フィールドを足す前と後では、記事の持つカスタムフィールド値が異なるので。
$args = array(
'post_type' => 'news',
'posts_per_page' => '8',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'pick_up',
'value' => 'true',
'compare' => 'NOT LIKE'
),
array(
'key' => 'pick_up',
'compare' => 'NOT EXISTS'
);
)
);
$query = new WP_Query( $args );
if( $query->have_posts() ){
while( $query->have_posts() ){
$query->the_post();
the_title();
}
wp_reset_postdata();
}
- カスタムフィールド値が「true」ではない記事
- カスタムフィールド値が「空っぽ」の記事
のどちらかに当てはまる記事を出せ、とします。
条件3つで「or」
「pick up」以外に絞り込み条件が重なる場合もあると思いますが、続けて3つ目の条件を足してもNG。入れ子にするなどして工夫。
そもそも「or」は2者の比較なので、「a || b || c」みたいにはいかない。
やると、エラーは出ずタイムアウトします。