get_postsでサブループを作成する例|パラメータの設定など【WordPress】

WordPressでサイトを作成していると、メインループとは違った条件のループ(サブループ)を作成したい場合があると思います。

今回は、get_posts関数を使用してサブループを作成するソースコードの例と、get_posts関数の主なパラメータの紹介となります。

サブループを作成する際には、WP_Queryを使用する場合もあります。違いとしては、WP_Query使用する場合では、メソッド(have_posts、the_post、next_postなど)を使用し、投稿データを扱うことができます。その他、投稿を取得するパラメータが違う場合もあります。

WP_Queryについては、以下を参考にしてみてください。

get_posts関数を使用したサブループの例

下記ソースコードは、get_posts 関数で取得した投稿データを、foreachループを利用して出力するサブループの例となり、サブループを出力したい箇所に記述します。

<ul>
<?php
// get_posts()のパラメータを指定
$args = array(
	// 記事を3件表示
    'posts_per_page' => 3,
    // 記事をランダムで表示
    'orderby' => 'rand'
);
// パラメータに基づいた投稿データの配列を取得
$my_posts = get_posts( $args );

// ループ開始
foreach ( $my_posts as $post ) : 
	// サブループの投稿データをセット
    setup_postdata( $post );
?>
    <li>
		<a href="<?php the_permalink(); ?>">
			<h2><?php the_title(); ?></h2>
			<?php the_content(); ?>
   		</a>
    </li>
<?php
endforeach;
//ループ終了

// メインクエリの投稿データに戻す
wp_reset_postdata(); 
?>
</ul>

get_posts関数のコードの説明

上記、get_posts関数のコードのポイントとなる箇所となります。

get_posts()

get_posts関数では、パラメータで指定した投稿データを配列で取得できます。

例のコードでは4行目からの箇所で、サブループの投稿データをget_posts関数で取得しています。パラメータには、投稿記事を3件表示し、表示順はランダムとして指定しています。

setup_postdata()

setup_postdata関数では、引数に指定した投稿データを各種のグローバル変数へセットします。それにより、テンプレートタグを使って投稿データを取得できます。

例のコードでは16行目からの箇所で、setup_postdata関数の引数に、get_posts関数で取得したサブループの投稿データをセットしています。

wp_reset_postdata()

wp_reset_postdata関数は、グローバル変数へセットされたサブループの投稿データを、メインクエリの投稿データに戻します。それにより、以降メインループの投稿データを利用できます。

例のコードでは29行目の箇所となります。

get_posts()の主なパラメータ

以下は、get_posts関数で指定できる主なパラメータの例となります。

表示・順序関連

表示・順序関連のパラメータです。下記で指定してあるパラメータはデフォルトの値となります。

<?php 
$args = array(
	// 1ページに表示する記事の件数
    'posts_per_page'   => 5,
    // ソート順の対象。date、category、title、randなどで指定 
	'orderby'          => 'date',
    // ソート順。ASC(昇順)かDESC(降順)で指定
	'order'            => 'DESC'
);
$my_posts = get_posts( $args ); 
?>

投稿データ関連

投稿データ関連(カスタムフィールド以外)のパラメータです。下記で指定してあるパラメータはデフォルトの値となります。

<?php 
$args = array(
    // 指定したページのタイプを取得。post、pageなど
	'post_type'        => 'post',
	// 指定したカテゴリーIDをもつ投稿。除外したいカテゴリーは、カテゴリーIDに - を付ける(複数の場合はカテゴリーIDを , で区切る)
	'category'         => '',,
    // 指定した投稿IDの投稿(複数の場合は投稿IDを , で区切る)
	'include'          => '',
    // 指定した投稿IDの投稿を除外(複数の場合は投稿IDを , で区切る)
	'exclude'          => '',
    // 指定した投稿IDが、親の投稿IDの場合
	'post_parent'      => '',
    // クエリに関するフィルター処理を行わない場合はtrue、フィルター処理を行う場合はfalseを指定
	'suppress_filters' => true 
);
$my_posts = get_posts( $args ); 
?>

カスタムフィールド関連

カスタムフィールド関連のパラメータです。下記で指定してあるパラメータはデフォルトの値となります。

<?php 
$args = array(
	// 指定したカスタムフィールドのキー名を持つ投稿
	'meta_key'         => '',
    // 指定したカスタムフィールドの文字列の値を持つ投稿
	'meta_value'       => '',
);
$my_posts = get_posts( $args ); 
?>

今回、紹介した関数やパラメータなどの詳細は、以下の参考サイト・書籍を確認してみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。