WP_Queryを利用したループ処理について
WP_Queryを利用して取得した記事をループ処理させることが可能です。 まずは基本のループ処理について見ていきましょう。
<?php
$query = new WP_Query( 'category_name="未分類"' );
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>zero</h1>
<?php while($query->have_posts() === true){ // まだ記事が残っていれば ?>
<?php $query->the_post(); //1件記事を取得($postに代入) ?>
<!-- $postの内容を確認 -->
<pre><?php var_dump($post); ?></pre>
<!-- タイトルと本文を出力 -->
<h2><?php the_title(); //$post->post_titleを出力する関数 ?></h2>
<p><?php the_content(); //$post->post_contentを出力する関数 ?></p>
<?php } ?>
</body>
</html>
have_posts メソッド
have_posts メソッドは現在のWP_Queryオブジェクトで取得できる投稿が残っているかどうかをtrue, falseで返すメソッドです。今回のループではwhileを利用して、投稿が残っている間、記事の出力を繰り返しています。
the_post メソッド
グローバル変数の$postに次の投稿を代入するメソッドです。投稿内容の出力をするための準備にあたります。(代入の直前でloop_startアクションフックが実行されます。アクションフックについては後述します。)
the_title メソッド
$postに投稿データが格納されていることを条件に、投稿のタイトル($post->post_title)を出力するメソッドです。
the_content メソッド
$postに投稿データが格納されていることを条件に、投稿の本文($post->post_content)を出力するメソッドです。(出力の直前でthe_contentフィルターフックが実行されます。)
wordpressループとは
上記の処理の流れは
- 次の投稿があるか確認
- 次の投稿をセット
- 投稿の出力
という流れに大きくまとめることが可能です。 この一連の繰り返しをWordPressループと呼びます。
特に、URLから自動生成されるWP_Queryオブジェクト(メインクエリ)を利用したWordPressループをメインループと呼びます。次項ではこのメインループについて詳しく見ていきましょう。