WordPressを使ってブログを運営していると、特定のカテゴリの投稿を除外して一覧表示したい場面があります。例えば、特定のイベント情報を掲載するページで、過去のイベント記事を除外して表示する場合などが挙げられます。WordPressでは、WP_Queryを利用することで、簡単にこのようなカスタムクエリを作成することができます。
WP_Queryを使ったカスタムクエリ
WP_Queryを使用して特定のカテゴリを除外して投稿を取得します。
<?php
$excluded_category = 'uncategorized'; // 除外するカテゴリのスラッグ
$args = array(
'post_type' => 'post', // 投稿タイプを指定します。例えば、'post' は通常の投稿です。
'posts_per_page' => -1, // 表示する投稿数。-1 はすべての投稿を表示します。
'category_name' => '-' . $excluded_category, // 除外するカテゴリを指定します。ここで '-' を使っています。
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// ここで投稿のタイトルなどを表示します。
?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php
}
} else {
// 投稿が見つからなかった場合の処理を記述します。
echo '投稿はありません。';
}
// クエリのリセット
wp_reset_postdata();
?>
このカスタムクエリをテーマファイル(例えば、index.phpやpage.phpなど)に組み込むことで、特定の条件で記事を一覧表示するページを作成することができます。ブログのテーマや目的に合わせて、さまざまなカスタマイズを行ってください。