WordPressでforeachを使用して各記事情報を取得する方法

thumbnail

こんにちは、今回はWordPressでforeachを使用して各記事情報を取得する方法を解説します。

記事情報取得の流れ

  • 1. 必要な情報の指定
  • 2. 指定した情報の取得
  • 3. 各記事にキーを付与
  • 4. 記事のIDを取得

以下、簡単なコード例になります。

PHP

<?php
  $args = array(  /* 取得したい情報の指定 */
  'post_type' => 'post',
  'post_not_in' => array( $post->ID ),
  'posts_per_page' => -1,
      'post_status' => array(
        'publish'
      )
    );
    $posts = get_posts( $args );
?>
<?php
  foreach( $posts as $key => $post_val ): /* 各記事のキーを付与 */
  $this_post_id = $post_val->ID; /* 記事IDの取得 */
?>
<?php endforeach;?>

順を追って説明します。

WP Queryを使った情報の取得

情報の取得はWP Queryを使用します。

各記事の情報を取得する為に最初に必要になるものが、カスタムクエリの作成です。
カスタムクエリを簡単に説明すると特定の情報を取得するための命令になり、取得したい情報の種類を指定します。

カスタムクエリの作成

カスタムクエリは、配列でパラメータを定義 (上述例の2行目から8行目)し
「get_posts関数」 に渡すことで作成できます。

get_posts関数

最新の投稿、または指定された条件に一致する投稿を取得する関数です。
引数 $argの配列で条件を指定し、任意の投稿を取得します。

今回使われている配列については、下記をご確認ください。

パラメータ

コード例に使われているものも含めいくつかご紹介します。

パラメータ 詳細
post_type 取得する投稿タイプの設定。
post_status 取得する記事のステータス。
publishに設定で、公開している記事のみ取得。
posts_per_page 取得する記事の件数。
-1とすることで、すべての投稿ステータスを取得。
post_in 取得する投稿IDの設定。
post_not_in 取得しない投稿IDの設定。
array( $post->ID ) で表示中の投稿を除外。

各記事のIDを設定

取得した情報から記事を表示するためには、キーが必要になります。
そこで、登場するのがforeach文です。

foreach文

foreach文は、引数の配列からデータを1つずつ取り出し、取り出したデータを使って処理を繰り返し実行できます。
本記事のコード例では、キーと値どちらも取り出しています。

記述方法は、下記のようになります。

foreach( $配列名 as $キー => $値){
  実行予定の関数;
}

記事IDの取得

$this_post_id = $post_val->ID(コード例14行目) がforeachの繰り返し処理により、記事IDの取得を行うことで、各記事情報の取得が可能になります。

まとめ

WordPressでforeachを使用して各記事情報を取得する方法をご紹介しました。

今回のコード例では、実行予定の関数が一つだけでしたが、もちろん複数の関数を一緒に処理することも可能です。

他にも関数を追加すれば、一覧表示などもできますので、試してみてはいかがでしょうか。