WordPress 検索結果やカテゴリー/タグ一覧のクエリー条件を設定する

通常WordPressのループ実装する際に以下のようにパラメータを設定すると思います。
$myposts = get_posts( array(
    'post_type'     => 'post',
    'posts_per_page'=> ‘-1',
));
もしくは
$args=array(
    'post_type'     => 'post',
    'posts_per_page'=> '10',
);
$the_query = new WP_Query($args);
ですが、検索結果やカテゴリー/タグ一覧の表示にパラメータを設定したいときは、アクションフックを使うのが便利です。
function QueryListFilter($query) {
    if ( !is_admin() && $query->is_main_query() && ($query->is_tag() || $query->is_search() || $query->is_category()) ) {
        $query->set('post_type', 'post');         // クエリーの対象を投稿記事にする
        $query->set('posts_per_page', '10');      // 一覧表示数
        $query->set('category__not_in', ‘1');     // 未分類のカテゴリを非表示
    }
    return $query;
}
add_action('pre_get_posts','QueryListFilter');
上の例は、検索結果とカテゴリー/タグ一覧の表示で「投稿記事だけで、1ページに10件、未分類のカテゴリー以外を表示」という条件を設定しています。
こうすることで、それぞれ違う条件を設定したり同じ条件を設定したりと自由自在です。

シェアする