wordpress サブループメインループループ処理

【wordpress】メインループとサブループの表示

2020.02.10 / 2020.11.19

wordpressの投稿の表示ホ方法です。 ループは大きく分けて「メインループ」と「サブループ」の2つに分けられます。この記事では使用頻度の高いサブループの表示方法をメインに紹介していきます。

メインループ

今回はグループ名を[group_name]、画像名を[item_image]、テキスト名を[item_text]と指定しています。

<?php if (have_posts()): while (have_posts()) : the_post(); ?>
	<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
		<?php echo get_the_date(); ?>
		<?php the_permalink(); ?>
		<?php echo get_the_title(); ?>
		<?php the_content(); ?>		
	</div> <?php endwhile; ?>
<?php else: endif; ?>

ページタイトルや本文の内容を表示したい場合は、while以降にタイトルを表示するget_the_title() や、本文の内容を表示するthe_content() を使うことで投稿内容を表示します。 

投稿内容が必ずある場合は、次のようにif文を省略することもできます。

<?php while (have_posts()): the_post(); ?>
	<!-- 中略 -->
<?php endwhile; ?>

基本的には一つのテンプレート内で使用メインループは一つまで、と覚えておきましょう。 ただ、ループを複数設置したいってことはよくあります。 メインループとは別にループを複数設置したい場合は、次に紹介するサブループを使います。

ポイント
  • 一つのテンプレート内で使用できるメインループは一つまで

サブループ

サブループは、メインループとは別にループを作りたい時に使用します。 例えば、カスタム投稿タイプ Products の投稿を表示する場合は、次のコードをテンプレートファイルに追加します。

<?php $args = array( 'post_type' => 'Products' );// カスタム投稿タイプ
 Products $the_query = new WP_Query($args); if($the_query->have_posts()): ?>
	<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
		<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
			<?php echo get_the_date(); ?>
			<?php the_permalink(); ?>
			<?php echo get_the_title(); ?>
			<?php the_content(); ?>		
		</div>
	<?php endwhile; ?>
	<?php wp_reset_postdata(); ?>
<?php else: ?>
<!-- 投稿が無い場合の処理 -->
<?php endif; ?>

固定ページをトップページへ表示する方法

トップページなどに固定ページの内容を表示したい時はpost_typeの指定をpage_idに変更します。 例えば、固定ページのページIDが123の場合に、トップページにページID123のページを表示したい時は、次のコードをテンプレートファイルに追加します。

<?php $args = array(
 	'page_id' => 123
 );
 $the_query = new WP_Query($args); if($the_query->have_posts()): ?>
	 <?php while ($the_query->have_posts()): $the_query->the_post(); ?>
	 <!-- 表示内容 -->
	 <?php endwhile ;endif; ?>

ポイント

WordPressの本文のpやhタグにclassをつける
固定ページのスラッグを取得し、そのスラッグに応じて表示するテンプレートを変更する
プラグインなしで絞り込み機能の設置
会員限定記事と一般公開記事にそれぞれ別のアイコンを設定
検索結果からページを除外
条件分岐によってページ毎に別デザインする方法
カスタム投稿タイプのURLをIDに変更する方法
カスタム投稿タイプにカテゴリ&タグ追加しアーカイブページで表示