category

category

wordpress

2024.10.28

2024.10.28

20

【WordPress】メインクエリとは?

まず、言葉の意味としてクエリ=「問い合わせ」です。

WordPressは、管理画面から記事を登録でき、その記事を自由自在にサイトに表示することができます。

管理画面から登録された記事は自動的にデータベースに保存され、サイトに表示する時はデータベースに問い合わせをしてデータ(記事)を取得するわけですが、データベースの問い合わせには具体的な条件が必要です。

WordPressでは、サイトのページ毎に何をどのように取得するのかあらかじめ決められている条件があります

条件も含めた問い合わせのことメインクエリと言います。

※メインクエリの条件は変更することができます(方法は後述)

メインクエリを使って記事を呼び出すコード例

<?php 
if(have_posts()):
    while(have_posts()):the_post(); ?>
    
        <p><?php the_title(); ?></p>
    
    <?php endwhile;
endif; 
?>

※上記コードでは記事タイトルのみ表示(5行目)しています。5行目以外はメインクエリのお決まりのコードとして覚えてしまって問題ありません。

メインクエリで取得できる記事

「メインクエリはページ毎にあらかじめ条件が決まっている」と前述しました。

カテゴリページ年月アーカイブページ該当する記事が複数ありますので、全てが返されます(ただし、1ページ内に表示する件数のみ。2ページ目には自動的に2ページ目の記事が返されます。)

固定ページ記事詳細ページ該当する記事は1件なので、返されるのは1件のみです。

メインクエリの条件の変更方法

メインクエリの条件を変更したい場合は、functions.phpに記述します(他にも方法があります)

↓カテゴリページの1ページあたりの記事件数を12件に、表示順を昇順にする例です。

function change_posts_per_page($query) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( $query->is_category ) {
        $query->set( 'posts_per_page', '12' );
        $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

※5行目が「カテゴリページの場合」を意味します。6行目が1ページあたりの記事数、7行目で昇順に変更しています。

634

コメント

コメントを残す

ニックネームは公開されます

CAPTCHA


閉じる