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ループとは

上記の処理の流れは

  1. 次の投稿があるか確認
  2. 次の投稿をセット
  3. 投稿の出力

という流れに大きくまとめることが可能です。 この一連の繰り返しをWordPressループと呼びます。

特に、URLから自動生成されるWP_Queryオブジェクト(メインクエリ)を利用したWordPressループをメインループと呼びます。次項ではこのメインループについて詳しく見ていきましょう。

results matching ""

    No results matching ""