よく使うWP_Queryの記述パターン
前提としてカスタム投稿を使用し、投稿タイプは「blog」とする。
もしカスタム投稿ではなく、単なる投稿だったら「post」とすればOK。
投稿タイプで記事を取得したい場合
<?php
$args = array(
'post_type' => 'blog', //投稿タイプ
'orderby' => 'date', //日付で
'order' => 'DESC', //降順で
'post_status' => 'publish', //公開された投稿を
'posts_per_page' => -1 //全部(数を決めたい場合は正の整数で)
);
?>
<!-- start loop -->
<?php $loop = new WP_Query( $args ); ?>
<?php if( $loop->have_posts() ) : ?>
<?php while( $loop->have_posts() ) : $loop->the_post(); ?>
<!-- loop内表示処理 -->
<?php endwhile; ?>
<?php wp_reset_postdata(); endif; ?>
<!-- end loop -->
うっかり忘れてしまう部分が以下
order | DESC | 最高から最低に降順(ex. 3, 2, 1) |
---|---|---|
ASC | 最低から最高に昇順(ex. 1, 2, 3) |
投稿タイプとタクソノミーでの絞り込みで記事を取得したい場合
前提としてカスタムタクソノミーを使用し、スラッグタイプは「blog_tax」とし、それに属するタームスラッグを「lunch」とする。
- post_type => blog
- taxonomy => blog_tax
- term => lunch
単純に$argsの中身にタクソノミーの指定を追加するだけ。
もしカスタムタクソノミーではなく単なる投稿(post)だったら、ポストタイプを「post」タクソノミーを「category」としてターム部分を目的のスラッグに置き換えればOK。
$args = array(
'post_type' => 'blog',
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'blog_tax', //タクソノミーのスラッグ
'field' => 'slug',
'terms' => 'lunch' //タームのスラッグ
)
)
);
大抵の場合は以上で足りると思われるが、さらに絞り込みたい場合は同じ様に条件に合わせたパラメータ追加指定する。
かなり多くのパラメータがあるので割愛するが、必要であれば以下参照。