WordPress 条件を指定して記事一覧を絞り込んで表示する
WP_Query
やget_posts
のパラメーターで条件を指定して記事一覧を絞り込んで表示する方法を紹介します。
投稿で絞り込む
投稿IDで絞り込む
<?php
$args = array(
'p' => 1
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数の投稿IDで絞り込む
<?php
$args = array(
'post__in' => array(1,5)
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
投稿スラッグで絞り込む
<?php
$args = array(
'name' => 'hello-world'
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数の投稿スラッグで絞り込む
<?php
$args = array(
'post_name__in' => array('hello-world', 'post-name') //WordPress4.4から
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
カテゴリーで絞り込む
カテゴリーIDで絞り込む
<?php
$args = array(
'cat' => 29,
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数のカテゴリーIDで絞り込む
<?php
$args = array(
'cat' => '42,44'
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
カテゴリースラッグで絞り込む
<?php
$args = array(
'category_name' => 'ramen'
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数のカテゴリースラッグで絞り込む
<?php
$args = array(
'category_name' => 'ramen,tsukemen'
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
カテゴリーIDで絞り込む(子カテゴリー除外)
<?php
$args = array(
'category__in' => 44
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数のカテゴリーIDで絞り込む(子カテゴリー除外)
<?php
$args = array(
'category__in' => array(44, 42)
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
カスタム投稿タイプで絞り込む
カスタム投稿タイプで絞り込む
<?php
$args = array(
'post_type' => 'ramen-post'
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
複数のカスタム投稿タイプで絞り込む
<?php
$args = array(
'post_type' => array('post', 'page', 'ramen-post')
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
タクソノミー、タームで絞り込む
タームで絞り込む
<?php
$args = array(
'post_type' => 'somen-post',
'tax_query' => array(
array(
'taxonomy' => 'somen_tax',
'field' => 'slug', //term_id、name、slug、term_taxonomy_idで指定可
'terms' => 'hosomen'
),
),
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
</ul>
日付で絞り込む
<?php
$args = array(
'post_type' => 'event_post',
'tax_query' => array(
array(
'key' => 'customfield_key', //絞り込むカスタムフィールドのキーを指定
'value' => '2022/02/02', //絞り込む値を指定
'compare' => '=', //絞り込む条件を指定。「=」一致した場合。
'type' => 'DATE' //絞り込む値のデータ型
),
),
'orderby' => 'meta_value', //カスタムフィールドで並び替え
'order' => 'ASC', //ASC:昇順 DESC:降順
'meta_key' => 'event_start_date', //並び替え基準になるカスタムフィールドを指定
);
$the_query = new WP_Query( $args );
?>
<ul>
<?php if ($the_query->have_posts()): ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>
使用できる演算子
演算子 | 意味 |
---|---|
= | 等しい |
!= | 等しくない |
> | より多い |
>= | 以上 |
< | より少ない |
<= | 以下 |
LIKE | 含む |
NOT LIKE | 含まない |
IN | 配列のいずれかを含む |
NOT IN | 配列のいずれかを含まない |
BETWEEN | 範囲内 |
NOT BETWEEN | 範囲外 |
※配列を指定できるのは compare が ‘IN’, ‘NOT IN’, ‘BETWEEN’ または ‘NOT BETWEEN’ の場合
※’type’ を DATE、’compare’ を BETWEEN にして正しく比較できるのは、日付が YYYY-MM-DD 形式で保存されていて同じ形式の日付と比較する場合のみ
使用できるデータ型
データ型 | 意味 |
---|---|
CHAR | 文字 |
BINARY | バイナリー |
DATE | 日付 |
DATETIME | 日時 |
TIME | 時刻 |
NUMERIC | 整数(符号あり) |
SIGNED | 整数(符号あり) |
UNSIGNED | 整数(符号なし) |
DECIMAL |
浮動小数点数 DECIMAL(最大桁数,小数点以下桁数) 例: DECIMAL(10,5) |
デザインを本で学びたい人向けの記事
Wordpress デザイナーの私的メモ帳
設計編
基本
投稿関連
固定ページ関連
カテゴリー関連
タクソノミー、ターム関連
テンプレート作成
- category.php カテゴリー専用テンプレートを作る
- archive.php カスタム投稿タイプ専用テンプレートを作る
- taxonomy.php カスタムタクソノミー、タームページを作る
- get_template_part() 外部ファイル・テンプレートを読み込む