WP_Query実用スニペット集(除外・検索・ページネーション)
概要
迷いがちなカテゴリ除外・検索・ページネーションを最小構成でまとめて確認。テンプレ化しておけば新規一覧ページを最速で立ち上げられます。
PHP
<?php
// 1) カテゴリID 3 と 7 を除外して最新5件
$q = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 5,
'category__not_in' => [3,7],
]);
// 2) 検索キーワード $kw を対象(タイトル重視)
$kw = get_query_var('s');
$q2 = new WP_Query([
's' => $kw,
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 10,
]);
// 3) ページネーション(/page/2 などに対応)
$paged = max(1, get_query_var('paged'));
$q3 = new WP_Query([
'posts_per_page' => 10,
'paged' => $paged,
]);
if ($q3->have_posts()):
while ($q3->have_posts()): $q3->the_post(); ?>
<article><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></article>
<?php endwhile;
echo paginate_links([
'total' => $q3->max_num_pages,
]);
wp_reset_postdata();
endif;
解説
・pagedは1ページ目でも必ず計算して渡すのが安定
・重いクエリは**fields => 'ids'**やキャッシュ併用で最適化
・検索はrelevanssiやLIKE拡張に発展させやすい


