have_posts()


関数WordPresshave_posts()は、投稿のループを処理するために使用される関数です。投稿が存在するかどうかをチェックし、存在する場合はループ内の投稿を処理します。

シンタックス

have_posts();

have_posts()は、WordPressループを開始または制御するために使用され、現在のクエリに基づいて投稿が存在するかどうかを確認します。

動作

have_posts()は、次の投稿が存在する場合にtrueを返し、投稿が存在しない場合はfalseを返します。WordPressループ内で通常使われます。

例 1: 投稿が存在するか確認する基本的なループ

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <div><?php the_content(); ?></div>
  <?php endwhile; ?>
<?php else : ?>
  <p>投稿がありません。</p>
<?php endif; ?>

例 2: 投稿タイトルのみ表示

以下のコードは投稿が存在する場合、タイトルのみを一覧表示します。

<?php if ( have_posts() ) : ?>
  <ul>
    <?php while ( have_posts() ) : the_post(); ?>
      <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
  </ul>
<?php endif; ?>

例 3: 条件付きで投稿があるか判定

指定した条件に基づき投稿を表示します。

<?php if ( have_posts() && is_home() ) : ?>
  <h3>ホームページの投稿一覧</h3>
  <?php while ( have_posts() ) : the_post(); ?>
    <div><?php the_title(); ?></div>
  <?php endwhile; ?>
<?php else : ?>
  <p>このページには表示する投稿がありません。</p>
<?php endif; ?>

例 4: 投稿が存在しない場合のエラーメッセージ

投稿が見つからない場合にエラーメッセージを表示します。

<?php if ( ! have_posts() ) : ?>
  <p>お探しの投稿は見つかりませんでした。</p>
<?php endif; ?>

例 5: カスタムクエリを使用する場合

カスタムクエリを使って投稿を表示します。

<?php 
$query = new WP_Query( array( 'post_type' => 'custom_post_type' ) );
if ( $query->have_posts() ) : 
  while ( $query->have_posts() ) : $query->the_post();
?>
    <h2><?php the_title(); ?></h2>
<?php 
  endwhile; 
  wp_reset_postdata();
endif; 
?>

注意事項

  • have_posts()はWordPressループ内で使用する必要があります。
  • カスタムクエリを使用する場合は、wp_reset_postdata()を使用してデフォルトのクエリに戻すことを忘れないでください。

関連機能: