BLOG

Paakのスタッフが得た知見や情報を発信するブログです。
たまに会社の出来事に関する記事もお届けします。

WordPress メインループとサブループ

ループとは、ページ内に投稿データを表示する繰り返し処理のことです。

WordPressにはメインループ とサブループがある。
要求されたURLに基づき自動的に取得された投稿データを出力するのがメインループであり、任意で指定した条件に基づき投稿データを取得・出力するのがサブループです。

例えば、ニュース一覧ページでは、記事をメインループ で呼び出せるのに対し、
トップページでは記事をメインループ で呼び出せない。なので、サブループを使用して記事を呼び出す必要がある。
このようにテンプレートファイルによって、メインループ で呼び出せるデータが変わる。

メインループ

メインループの基本的な書き方

 <?php if(have_posts()): while(have_posts()): the_post(); ?>
 //ループ内処理
 <?php the_permalink();?> //URL表示
 <?php the_title();?> //タイトル表示
 <?php echo get_the_excerpt() ?> //抜粋を表示
 <?php the_content();?> //内容を表示
 <?php the_post_thumbnail();?> //アイキャッチを表示
 <?php the_time();?> //投稿時間を表示
 <?php the_category();?> //カテゴリーを表示
 <?php the_tags();?> //タグを表示
 
 <?php endwhile; endif; ?>
 <?php else: ?>
 //投稿データが取得できない場合の処理
 <?php endif; ?>

get_the_excerpt()
the_excerpt()の場合、抜粋がpタグで囲まれて出力される。基本的にpタグは不要なので、
echo get_the_excerpt()を使用すると良い。

また、下記のコードで抜粋する文字数の指定と末尾の記号の変更ができる。functions.phpで一括設定する方法もある。

 <?php echo mb_strimwidth(get_the_excerpt(), 0, {文字数}, "…", "UTF-8"); ?>

the_content()
この中は基本的にWYSIWYG対応となる。そのままだとpタグで囲まれるので、不要な場合、下記を記述する。

 <?php remove_filter ('the_content', 'wpautop'); the_content(); ?>

the_time()
the_date()の場合、ループ内で前の記事と日付が同じ時、日付が表示されない仕様になっている。the_time()を使用することで解決できる。
また、下記のようにフォーマットの指定が可能。

 <?php the_time('Y/m/d'); ?>//2021/04/28

サブループ

サブループの基本的な書き方

トップページなどで投稿一覧を取得する場合を想定してます

 <?php 
 $args = array(
   'post_type' => 'post',//投稿タイプを指定 postは通常投稿
   'posts_per_page' => 8//表示件数
 );
 $the_query = get_posts( $args );
 if ( $the_query ) :
 foreach ( $the_query as $post ) : setup_postdata( $post );
 ?>
 //ループ内処理
 <?php
 endforeach;
 wp_reset_postdata();
 endif;
 ?>

ループ内処理の基本的なタグの書き方はメインループと同じです。

CONTACT /

webサイトでお困りのことがあれば、お気軽にご相談ください。

お問い合わせはこちら

CONTACT /

Paakについて、案件のご相談、採用についてはお問い合わせフォームからご連絡ください。