WEB制作のための情報サイト / unazuki Library

have_posts()

基本構文と使い方(引数・実行結果)

基本構文

記事が存在するかどうか調べて真偽値を返します。WordPressループの中で使うメソッドです。

have_posts();

引数

なし。

実行結果

戻り値(返す値):真偽値。記事があればtrue、なければfalseを返す。

よくある使い方

一般的にWordPressループの中で記事が存在するかどうかを判定するために使われます。下記のコードはWordPress開発で頻出するコードです。if文と組み合わせてメインクエリに記事があるかどうかを判定し、あればwhile文を使ってメインクエリから記事がなくなるまで処理を繰り返すコードです。

<?php if (have_posts()): // 記事があれば処理を開始 ?>
	<?php while (have_posts()): // 記事がなくなるまでループ処理 ?>
		<?php the_post(); // 処理対象の記事をセット ?>
		<a href="<?php the_permalink(); ?>">
			<?php the_title(); ?>
		</a>
	<?php endwhile; ?>
<?php endif; ?>

参考コード

例えばarchive.phpで記事一覧ページを作成する場合に、下記のようなコードで記事一覧を表示します。

<?php if (have_posts()): ?>
	<ul class="cards">
		<?php while (have_posts()): ?>
			<?php the_post(); ?>
			<li class="cards__item card">
				<a class="card__link" href="<?php the_permalink(); ?>">
					<div class="card__data">
						<div class="card__img">
							<?php if (has_post_thumbnail()) : ?>
								<?php the_post_thumbnail(); ?>
							<?php endif; ?>
						</div>
						<div class="card__date"><?php echo get_the_date('') ?></div>
						<div class="card__title"><?php the_title(); ?></div>
					</div>
				</a>
			</li>
		<?php endwhile; ?>
	</ul>
<?php endif; ?>

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
get_search_query() 検索キーワードを取得する。
get_post_type() 記事が所属する投稿タイプの名前を返す。
get_queried_object_id() 現在のクエリ(DBへの問い合わせ条件)に関するオブジェクトのIDを返す。
get_queried_object() 現在のクエリ(DBへの問い合わせ条件)に関するオブジェクトを返します。
the_posts_pagination() アーカイブページ(記事一覧ページ)にてページネーションを表示します。
get_the_posts_pagination() アーカイブページ(記事一覧ページ)にて利用可能なページネーションを取得します。
get_posts() 指定した条件にマッチする記事オブジェクトの配列を取得する。
get_post() 指定した投稿情報を取得する。
wp_reset_postdata() サブクエリによって上書きされたグローバルオブジェクト$postをリセットしてメインクエリに戻します。
the_post() 処理対象の記事をセットします。