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

get_posts()

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

基本構文

指定した条件にマッチする記事オブジェクトの配列を取得します。

get_posts($args);

引数

引数必須/任意引数に指定するもの
第1引数
$args
任意条件を配列で指定

利用できる主なパラメーターは下記の通り。

numberposts 取得する記事の件数を数値で指定。省略時は5。
p 取得する投稿のID
page_id 取得する固定ページのID
post_type 投稿タイプを文字列で指定(post,page,カスタム投稿タイプ名など、省略時:post)
category 記事が所属するカテゴリーをIDで指定
include 含める記事のIDを配列で指定
exclude 除外する記事のIDを配列で指定
order ASC/DESCを指定。ASCは昇順、DESCが降順。省略時はDESC
orderby 取得する順番の基準を文字列で指定(日付:date、ランダム:rand など。省略時はdate)
name 記事(投稿や固定ページ)の名前
meta_query メタクエリの指定(カスタムフィールドを条件に取得)

すべてのパラメーターは下記公式に記載があります。(英語)
https://developer.wordpress.org/reference/classes/wp_query/parse_query/

初期値null

実行結果

戻り値(返す値):指定した条件にマッチする記事オブジェクトの配列

例1.指定したIDとマッチする投稿オブジェクトを取得

下記の例ではID10の投稿オブジェクトを取得しています。

<?php
$args = [
	'post_type' => 'post', // デフォルトでpostのため省略可
	'p' => 10,
];
$posts = get_posts($args);
?>

取得した内容を下記コードで画面に表示してみます。

<?php
echo '<pre>';
print_r($posts);
echo '</pre>';
?>

表示結果は以下のようになります。このように、取得した記事オブジェクトの配列を返します。例ではID10を指定しているので配列の中身はIDの記事オブジェクトが1件のみです。

Array
(
    [0] => WP_Post Object
        (
            [ID] => 845
            [post_author] => 1
            [post_date] => 2026-01-13 09:10:49
            [post_date_gmt] => 2026-01-13 00:10:49
            [post_content] => 本文です
            [post_title] => タイトルです
            [post_excerpt] => 
            [post_status] => publish
            [comment_status] => open
            [ping_status] => open
            [post_password] => 
            [post_name] => %e3%82%bf%e3%82%a4%e3%83%88%e3%83%ab%e3%81%a7%e3%81%99
            [to_ping] => 
            [pinged] => 
            [post_modified] => 2026-01-13 09:10:49
            [post_modified_gmt] => 2026-01-13 00:10:49
            [post_content_filtered] => 
            [post_parent] => 0
            [guid] => https://example.com/?p=845
            [menu_order] => 0
            [post_type] => post
            [post_mime_type] => 
            [comment_count] => 0
            [filter] => raw
        )

)

例2.指定した複数の条件とマッチする投稿を取得

下記の例ではカスタム投稿タイプbookの3件の投稿オブジェクトを取得しています。ただし、ID80の投稿は除外します。

<?php
$args = [
	'post_type' => 'book',
	'numberposts' => 3,
	'exclude' => [80],
];
$posts = get_posts($args);
?>

学習者向け補足情報

【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。

【引数について】

  • 指定できる引数の数はテンプレートタグによって異なります。(引数なしもあり)
  • 引数ごとに必須 / 任意が決まっています。(必須は必ず指定、任意は指定しなければ初期値)
  • 引数名(例:$post)は仕様の便宜上の名前と考えてください。(この名前自体はテンプレートタグ実行に関係しません。各引数に何を指定するのかを理解していればOKです。)

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

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

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