当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「テンプレートタグ/get posts」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(Old: パラメータ仕様変更)
(最新版に更新 {{原文|Template Tags/get posts|95879}}<!-- 12:42, 7 December 2010 Nsp-code 版 -->)
1行目: 1行目:
{{Old||
 
* パラメータについて、大幅な機能追加・修正があります。}}
 
 
 
<div id="Description">
 
<div id="Description">
 
== 説明 ==
 
== 説明 ==
18行目: 15行目:
 
</div>
 
</div>
  
<div id="Generate_list">
+
<div id="Posts_list_with_offset">
 
=== リストの生成 ===
 
=== リストの生成 ===
 
</div>
 
</div>
27行目: 24行目:
 
<ul>
 
<ul>
 
<?php
 
<?php
$myposts = get_posts('numberposts=5&offset=1&category=1');
+
$myposts = get_posts('posts_per_page=5&offset=1&category=1');
 
foreach($myposts as $post) :
 
foreach($myposts as $post) :
 +
setup_postdata($post);
 
?>
 
?>
     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> --- <?php the_excerpt(); ?></li>
+
     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 
<?php endforeach; ?>
 
<?php endforeach; ?>
 
</ul>
 
</ul>
 
</pre>
 
</pre>
  
'''注:''' 上記クエリは、1件以上の記事があるカテゴリで使うべき。
+
'''注:''' 上記クエリは、2件以上の記事があるカテゴリで使うべき。そうでないと、何も表示されない。
  
<div id="Generate_another_list">
+
<div id="Reset_after_Postlists_with_offset">
=== 別のリストの生成 ===
+
=== オフセットのリセット ===
 
</div>
 
</div>
  
ウェブページに 10件の記事をアルファベット順に表示したいとき、投稿日・タイトル・抜粋文を出すには次のようにします。
+
ループの後で、foreach 実行前の記事が必要な場合は、以下のように記述します。
  
<pre>
+
<nowiki> <ul>
<?php
+
<?php
$postslist = get_posts('numberposts=10&order=ASC&orderby=post_title');
+
global $post;
foreach ($postslist as $post) :
+
$tmp_post = $post;
setup_postdata($post);
+
$myposts = get_posts('posts_per_page=5&offset=1&category=1');
the_date();
+
foreach($myposts as $post) :
echo "<br />";
+
  setup_postdata($post);
the_title();
+
?>
the_excerpt();
+
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
endforeach;
+
<?php endforeach; ?>
?>
+
<?php $post = $tmp_post; ?>
</pre>
+
</ul> </nowiki>
  
 
<div id="Access_all_post_data">
 
<div id="Access_all_post_data">
=== 全ての投稿データにアクセス ===
+
=== 全記事データにアクセスする ===
 
</div>
 
</div>
  
様々な理由から、デフォルトでは、記事 ID や [[テンプレートタグ/the_content|the_content()]] 経由での記事本文といったいくつかのデータが get_posts で取得できません。これは、内部関数 <code>setup_postdata()</code> を <code>$post</code> 配列で呼ぶことにより解決できます。
+
いくつかの記事データは、get_posts デフォルトで利用できません。[[テンプレートタグ/the_content|the_content()]] のコンテンツや ID 等です。内部関数 setup_postdata() に、引数として $post 配列を与えることで、解決できます。
  
<pre><?php
+
<nowiki> <?php
$lastposts = get_posts('numberposts=3');
+
$lastposts = get_posts('posts_per_page=3');
 +
foreach($lastposts as $post) :
 +
    setup_postdata($post);
 +
?>
 +
<h2><a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></h2>
 +
<?php the_content(); ?>
 +
<?php endforeach; ?>
 +
</nowiki>
  
foreach($lastposts as $post) :
+
setup_postdata() を呼び出さずに投稿 ID またはコンテンツにアクセスするには、あるいは([[Database_Description|the posts table]] に蓄積されている)任意の投稿データにアクセスするには、<tt>$post->''COLUMN''</tt> を使用できます。ここで <tt>''COLUMN''</tt> はデータのテーブルカラム名です。したがって、<tt>$post->ID</tt> は ID、 <tt>$post->post_content</tt> はコンテンツ、といった具合です。データを表示/出力するには、以下のように [[Glossary#PHP|PHP]] echo コマンドを使用します。
 +
 
 +
<nowiki> <?php echo $post->ID; ?> </nowiki>
 +
 
 +
<div id="Latest_posts_ordered_by_title">
 +
=== 最近の投稿をタイトル順に並べる ===
 +
</div>
 +
 
 +
アルファベット順に昇順で最近の 10 件を表示するには、以下のコードで投稿日、タイトル、抜粋を表示します。
 +
 
 +
<nowiki>
 +
<?php
 +
$postslist = get_posts('posts_per_page=10&order=ASC&orderby=title');
 +
foreach ($postslist as $post) :  
 
     setup_postdata($post);
 
     setup_postdata($post);
    ?>
+
?>  
    <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a>
+
<div>
    <?php the_content(); ?>
+
<?php the_date(); ?>
<?php endforeach; ?>
+
<br />
</pre>
+
<?php the_title(); ?>  
 +
<?php the_excerpt(); ?>
 +
</div>
 +
<?php endforeach; ?>
 +
</nowiki>
  
<code>setup_postdata</code> を呼ばずに ID 等を取得する別の方法としては、<code>"$post->ID"</code> や <code>"$post->post_data"</code>(記事本文)を持ちます。これで内部関数を呼ぶことを避けられます。
+
'''注:''' '' orderby パラメータは [[Version 2.6]] で変更されました。このコードでは新しい orderby フォーマットを使用しています。詳細は[[テンプレートタグ/get_posts#Parameters|Parameters]] を参照してください。
(訳注:こちらの方が望ましいのか?)
+
  
<div id="Parameters">
+
<div id="Random_posts">
== パラメータ ==
+
=== ランダムに表示する ===
 
</div>
 
</div>
  
; numberposts
+
orderby パラメータに rand を指定して [[Glossary#MySQL|MySQL]] RAND() 関数を使用して最近の 5 件をランダムに表示します。
: (''整数'') 取得する投稿の数。初期値は <code>5</code>。
+
; offset
+
: (''整数'') 先頭から何件の投稿を除外するか。初期値は <code>0</code>(除外しない)。
+
; category
+
: (''整数'') 指定したカテゴリID の投稿のみを返す。初期値はなし(全カテゴリ)。
+
; orderby  
+
: (''文字列'') どの項目の値で投稿をソート(並べ替え)するか。次の値など:
+
:* <code>'post_title'</code> - ページ/記事タイトルのアルファベット順にソート (初期値)
+
:* <code>'post_date'</code> - 投稿日時順にソート
+
:* <code>'post_modified'</code> - 最終更新日時順にソート
+
:* <code>'ID'</code> - 投稿ID でソート
+
:* <code>'post_author'</code> - 著者の ID 番号でソート
+
:* <code>'post_name'</code> - 投稿スラッグのアルファベット順にソート
+
:* '''注:''' この値は [[データベース概要#Table:_wp_posts|wp_post テーブル]] のどのフィールド名でも指定できる。
+
; order
+
: (''文字列'') ソート順。有効値:
+
:* <code>'ASC'</code> - 昇順(値 小→大)にソート
+
:* <code>'DESC'</code> - 降順(値 大→小)にソート (初期値)
+
  
<p class="important">注: 以下のパラメータは、WordPress バージョン '''2.1 以降'''で指定できます。2.0.x 系では使えません。</p>
+
<nowiki> <ul><li><h2>A random selection of my writing</h2>
{{draft|これ以降}}
+
    <ul>
 +
<?php
 +
$rand_posts = get_posts('posts_per_page=5&orderby=rand');
 +
foreach( $rand_posts as $post ) :
 +
?>
 +
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 +
<?php endforeach; ?>
 +
    </ul>
 +
</li></ul> </nowiki>
  
; include
+
<div id="Show_all_attachment">
: (''文字列'') 特定の投稿のみを取得したいとき、投稿ID をカンマ区切りで指定。例えば、'include=4,12' とすれば、記事ID 4 と 12 の記事データのみを返す。このパラメータを指定すると、''offset'', ''category'', ''exclude'', ''meta_key'', ''meta_value'', ''post_parent'' パラメータの指定は無視される。初期値はなし(指定なし)。
+
=== アタッチメントを全て表示する ===
; exclude
+
</div>
: (''文字列'') 特定の投稿を除外したいとき、投稿ID をカンマ区切りで指定。例えば、'exclude=4,12' とすれば、記事ID 4 と 12 の記事データは返さない。'''include''' パラメータを指定すると無視される。初期値はなし(除外なし)。
+
; meta_key
+
: (''文字列'') 特定のカスタムフィールドを持つ投稿のみを取得したいとき、そのキーを指定。たぶん ''meta_value'' パラメータとセットで指定。'''include''' パラメータを指定すると無視される。初期値はなし。
+
; meta_value
+
: (''文字列'') 特定のカスタムフィールドを持つ投稿のみを取得したいとき、その値を指定。たぶん ''meta_key'' パラメータとセットで指定。'''include''' パラメータを指定すると無視される。初期値はなし。
+
; post_type
+
: (''文字列'') 指定した投稿タイプの投稿のみを返す。有効値:
+
:* <code>post</code> - 記事(初期値)
+
:* <code>page</code> - [[Pages|「ページ」]]
+
:* <code>attachment</code>
+
; post_status
+
: (''文字列'') 指定した投稿ステータスの投稿のみを返す。有効値:
+
:* <code>'publish'</code> - 公開(初期値)
+
:* <code>'draft'</code> - 草稿
+
:* <code>'private'</code> - プライベート
+
:* <code>'static'</code> - 2.1 以降では使われていないかも
+
:* <code>'object'</code>
+
:* <code>'attachment'</code>
+
:* <code>'inherit'</code>
+
:* <code>'future'</code> - 予約投稿
+
:* <code>'pending'</code> - ペンディング(2.3 以降でのみ指定可)
+
; post_parent
+
: (''整数'') 特定の[[Pages|「ページ」]]の子ページのみを取得したいとき、親ページの ID を指定。'''include''' パラメータを指定すると無視される。初期値は <code>0</code>(指定なし)。
+
<!--
+
参考資料 ver.2.3 コード・DB より
+
  
$defaults = array(
+
テンプレートの [[The_Loop|Loops]] 外に記述します。
  'numberposts' => 5, 'offset' => 0,
+
  'category' => 0, 'orderby' => 'post_date',
+
  'order' => 'DESC', 'include' => '',
+
  'exclude' => '', 'meta_key' => '',
+
  'meta_value' =>'', 'post_type' => 'post',
+
  'post_status' => 'publish', 'post_parent' => 0);
+
  
ignore offset, category, exclude, meta_key, and meta_value, post_parent if using include
+
<?php
 +
 +
$args = array(
 +
'post_type' => 'attachment',
 +
'posts_per_page' => -1,
 +
'post_status' => null,
 +
'post_parent' => null, // any parent
 +
);
 +
$attachments = [[テンプレートタグ/get_posts|get_posts]]($args);
 +
if ($attachments) {
 +
foreach ($attachments as $post) {
 +
[[関数リファレンス/setup_postdata|setup_postdata]]($post);
 +
[[テンプレートタグ/the_title|the_title]]();
 +
[[テンプレートタグ/the_attachment_link|the_attachment_link]]($post->ID, false);
 +
[[テンプレートタグ/the_excerpt|the_excerpt]]();
 +
}
 +
}
 +
 +
?>
  
post_status  enum('publish', 'draft', 'private', 'static', 'object', 'attachment', 'inherit', 'future', 'pending')
+
<div id="Show_attachments_for_the_current_post">
-->
+
=== 現在の記事のアタッチメントを表示する ===
 +
</div>
  
== 外部リンク ==
+
[[The_Loop]] 内(<var>$post->ID</var> が利用できるところ)に記述します。
  
* [http://bono.s201.xrea.com/2007/04/394-wp_get_posts/ power source* » WP: テンプレートタグ get_posts で新着記事リスト等を表示] (2007-04-07) -- 各種使用例
+
<?php
 +
 +
$args = array(
 +
'post_type' => 'attachment',
 +
'posts_per_page' => -1,
 +
'post_status' => null,
 +
'post_parent' => $post->ID
 +
);
 +
$attachments = [[テンプレートタグ/get_posts|get_posts]]($args);
 +
if ($attachments) {
 +
foreach ($attachments as $attachment) {
 +
echo [[関数リファレンス/apply_filters|apply_filters]]('the_title', $attachment->post_title);
 +
[[テンプレートタグ/the_attachment_link|the_attachment_link]]($attachment->ID, false);
 +
}
 +
}
 +
 +
?>
  
 +
<div id="Parameters_WordPress_2.6+">
 +
== パラメータ(WordPress 2.6以降) ==
 +
</div>
  
{{原文|Template Tags/get posts|39408}}<!-- 19:48, May 15, 2007 SebastienCastiel 版 -->
+
"[[テンプレートタグ/get_posts#Parameters:_WordPress_2.5_And_Older|WordPress 2.5以前]]"のパラメータに加えて、<tt>get_posts()</tt> は、<tt>[[テンプレートタグ/query_posts#Parameters|query_posts()]]</tt> が取るパラメータを取ることができます。これらの関数は内部で同じデータベースクエリを使用します。
 +
 
 +
'''注:''' [[Version 2.6]] で orderby オプションがいくつか変更されました。<tt>post_</tt> で始まるフィールドは、この部分が名前から削除されています。例えば、<tt>post_title</tt> は <tt>title</tt> で、<tt>post_date</tt> は <tt>date</tt> です。
 +
 
 +
'''注: ''' [[Version 3.0]] から、 include および exclude パラメータに、ページ ID 配列を使用することができます。
 +
 
 +
'''注: ''' get_posts はデフォルトで <tt>'suppress_filters'=>true</tt> を使用します。一方、<tt>[[テンプレートタグ/query_posts|query_posts()]]</tt> はデフォルトでフィルターを適用します。WPML のようなクエリを変更するプラグインを使用する場合に混乱するかもしれません。
 +
 
 +
<div id="Parameters_WordPress_2.5_And_Older">
 +
== パラメータ(WordPress 2.5以前) ==
 +
</div>
 +
 
 +
{{Parameter|$numberposts|整数|取得する投稿の数。0 にするとto use the max number of posts per page の最大値。-1 にすると制限無。|オプション|5}}
 +
 
 +
{{Parameter|$offset|整数|先頭から何件の投稿を除外するか。|オプション|0}}
 +
 
 +
{{Parameter|$category|整数|指定したカテゴリID の投稿のみを返す。(-3のように)カテゴリID をマイナスにすると、このカテゴリID以外の投稿を返す。複数のカテゴリを指定する場合は、カテゴリIDをカンマで区切る(配列での指定は不可)。|オプション}}
 +
 
 +
{{Parameter|$category_name|文字列|指定したカテゴリー名またはカテゴリースラッグの投稿のみを返す。|オプション}}
 +
 
 +
{{Parameter|$tag|文字列|指定したタグスラッグの投稿のみを返す。複数のタグスラッグを指定する場合は、カンマで区切ると、いずれかのタグにマッチした投稿をすべて返す。タグスラッグを空白で区切って指定すると、すべてのタグにマッチした投稿を返す。|オプション}}
 +
 
 +
{{Parameter|$orderby|文字列|以下に示す様々な値(空白で区切る)で並べ替える。
 +
<ul>
 +
<li><tt>'author'</tt> - 著者ID。</li>
 +
<li><tt>'category'</tt> - カテゴリID。</li>
 +
<li><tt>'content'</tt> - コンテンツ。</li>
 +
<li><tt>'date'</tt> - 作成日。</li>
 +
<li><tt>'ID'</tt> - 投稿ID。</li>
 +
<li><tt>'menu_order'</tt> - メニュー。ページとアタッチメントでのみ有効。</li>
 +
<li><tt>'mime_type'</tt> - MIME type。アタッチメントでのみ有効。</li>
 +
<li><tt>'modified'</tt> - 最終更新日</li>
 +
<li><tt>'name'</tt> - stub。</li>
 +
<li><tt>'parent'</tt> - 親ID。</li>
 +
<li><tt>'password'</tt> - パスワード。</li>
 +
<li><tt>'rand'</tt> - ランダム。</li>
 +
<li><tt>'status'</tt> - ステータス。</li>
 +
<li><tt>'title'</tt> - タイトル。</li>
 +
<li><tt>'type'</tt> - 投稿タイプ。</li>
 +
</ul>
 +
'''注:'''
 +
<ul>
 +
<li><tt>ID</tt> と <tt>rand</tt> は [[Version 2.5]]から利用可能。</li>
 +
</ul>|オプション|date}}''
 +
 
 +
{{Parameter|$order|文字列|<tt>$orderby</tt> でのソート方式。有効な値:<ul><li><tt>'ASC'</tt> - 昇順(低から高)。</li><li><tt>'DESC'</tt> - 降順(高から低)。</li></ul>|オプション|DESC}}
 +
 
 +
{{Parameter|$include|文字列|表示したい投稿のID。カンマまたは空白で区切る。次の例では、6 つの投稿を表示する。<ul><li>'45,63,78,94,128,140'</li></ul>'''注: '''''このパラメータを使用すると posts_per_page, offset, category, exclude, meta_key, meta_value, および post_parent パラメータを上書きします。''|オプション}}
 +
 
 +
{{Parameter|$exclude|文字列|表示したくない投稿のID。カンマまたは空白で区切る。( <tt>$include</tt> パラメータを参照)|オプション}}
 +
 
 +
{{Parameter|$meta_key and $meta_value|文字列|メタフィールド(カスタムフィールド)のキーと値を持つ投稿のみ表示する。両方のパラメータ指定が必要(一方だけでは動作しない)。|オプション}}
 +
 
 +
{{Parameter|$post_type|文字列|表示する投稿のタイプ。利用可能なオプション:<ul><li>post - デフォルト</li><li>page</li><li>attachment</li><li>''any'' - 全て</li></ul>|オプション|post}}
 +
 
 +
{{Parameter|$post_status|文字列|指定したステータスの投稿を表示する。複数のステータスを指定する場合はカンマで区切る。利用可能なオプション:<ul><li>publish - デフォルト</li><li>private</li><li>draft</li><li>future</li><li>inherit - <tt>$post_type</tt> がアタッチメントのときのデフォルト</li><li>''(blank)'' - すべてのステータス(WordPress version 2.8 以降では、'any' を使用する。変更された時期は不明。)</ul>|オプション|publish}}
 +
 
 +
{{Parameter|$post_parent|整数|このIDの投稿の子のみを表示する。|オプション}}
 +
 
 +
{{Parameter|$nopaging|真偽値|ページングを有効/無効にする。ページングを無効にすると <tt>$numberposts</tt> オプションが無視される。|オプション}}
  
 
<div id="Related">
 
<div id="Related">
156行目: 233行目:
 
</div>
 
</div>
  
{{Tag General Tags}}
+
* [http://wordpress.org/extend/plugins/post-types-order/ Change Order for Custom Post Types in WordPress 3.0 and up]
{{Query String Tag Footer}}
+
  
{{DEFAULTSORT:Get_posts}}
+
{{原文|Template Tags/get posts|95879}}<!-- 12:42, 7 December 2010 Nsp-code 版 -->
  
[[en:Template Tags/get_posts]]
+
{{Query Tags}}
 +
 
 +
{{Tag Footer}}
 +
{{DEFAULTSORT:Get_posts}}
 +
[[Category:テンプレートタグ]]

2010年12月14日 (火) 08:42時点における版

テンプレートタグ get_posts() は、マルチループ(複数ループ)を作成するためのシンプルなタグです。

使い方

<?php get_posts('引数'); ?>

用例

リストの生成

サイトのフロントページに最新の記事を 1件のみ表示するよう設定していて、その次から 5件かつカテゴリID 1 の記事へのリンクと抜粋文を表示したいとき、次のようにコードを書きます。

<ul>
<?php
$myposts = get_posts('posts_per_page=5&offset=1&category=1');
foreach($myposts as $post) :
setup_postdata($post);
?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>

注: 上記クエリは、2件以上の記事があるカテゴリで使うべき。そうでないと、何も表示されない。

オフセットのリセット

ループの後で、foreach 実行前の記事が必要な場合は、以下のように記述します。

 <ul>
 <?php
 global $post;
 $tmp_post = $post;
 $myposts = get_posts('posts_per_page=5&offset=1&category=1');
 foreach($myposts as $post) :
   setup_postdata($post);
 ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
 <?php $post = $tmp_post; ?>
 </ul> 

全記事データにアクセスする

いくつかの記事データは、get_posts デフォルトで利用できません。the_content() のコンテンツや ID 等です。内部関数 setup_postdata() に、引数として $post 配列を与えることで、解決できます。

 <?php
 $lastposts = get_posts('posts_per_page=3');
 foreach($lastposts as $post) :
    setup_postdata($post);
 ?>
 <h2><a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></h2>
 <?php the_content(); ?>
 <?php endforeach; ?>
 

setup_postdata() を呼び出さずに投稿 ID またはコンテンツにアクセスするには、あるいは(the posts table に蓄積されている)任意の投稿データにアクセスするには、$post->COLUMN を使用できます。ここで COLUMN はデータのテーブルカラム名です。したがって、$post->ID は ID、 $post->post_content はコンテンツ、といった具合です。データを表示/出力するには、以下のように PHP echo コマンドを使用します。

 <?php echo $post->ID; ?> 

最近の投稿をタイトル順に並べる

アルファベット順に昇順で最近の 10 件を表示するには、以下のコードで投稿日、タイトル、抜粋を表示します。

 <?php
 $postslist = get_posts('posts_per_page=10&order=ASC&orderby=title');
 foreach ($postslist as $post) : 
    setup_postdata($post);
 ?> 
 <div>
 <?php the_date(); ?>
 <br />
 <?php the_title(); ?>   
 <?php the_excerpt(); ?>
 </div>
 <?php endforeach; ?>
 

注: orderby パラメータは Version 2.6 で変更されました。このコードでは新しい orderby フォーマットを使用しています。詳細はParameters を参照してください。

ランダムに表示する

orderby パラメータに rand を指定して MySQL RAND() 関数を使用して最近の 5 件をランダムに表示します。

 <ul><li><h2>A random selection of my writing</h2>
    <ul>
 <?php
 $rand_posts = get_posts('posts_per_page=5&orderby=rand');
 foreach( $rand_posts as $post ) :
 ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
    </ul>
 </li></ul> 

アタッチメントを全て表示する

テンプレートの Loops 外に記述します。

<?php

$args = array(
	'post_type' => 'attachment',
	'posts_per_page' => -1,
	'post_status' => null,
	'post_parent' => null, // any parent
	); 
$attachments = get_posts($args);
if ($attachments) {
	foreach ($attachments as $post) {
		setup_postdata($post);
		the_title();
		the_attachment_link($post->ID, false);
		the_excerpt();
	}
}

?>

現在の記事のアタッチメントを表示する

The_Loop 内($post->ID が利用できるところ)に記述します。

<?php

$args = array(
	'post_type' => 'attachment',
	'posts_per_page' => -1,
	'post_status' => null,
	'post_parent' => $post->ID
	); 
$attachments = get_posts($args);
if ($attachments) {
	foreach ($attachments as $attachment) {
		echo apply_filters('the_title', $attachment->post_title);
		the_attachment_link($attachment->ID, false);
	}
}

?>

パラメータ(WordPress 2.6以降)

"WordPress 2.5以前"のパラメータに加えて、get_posts() は、query_posts() が取るパラメータを取ることができます。これらの関数は内部で同じデータベースクエリを使用します。

注: Version 2.6 で orderby オプションがいくつか変更されました。post_ で始まるフィールドは、この部分が名前から削除されています。例えば、post_titletitle で、post_datedate です。

注: Version 3.0 から、 include および exclude パラメータに、ページ ID 配列を使用することができます。

注: get_posts はデフォルトで 'suppress_filters'=>true を使用します。一方、query_posts() はデフォルトでフィルターを適用します。WPML のようなクエリを変更するプラグインを使用する場合に混乱するかもしれません。

パラメータ(WordPress 2.5以前)

$numberposts
整数) (オプション) 取得する投稿の数。0 にするとto use the max number of posts per page の最大値。-1 にすると制限無。
初期値: 5
$offset
整数) (オプション) 先頭から何件の投稿を除外するか。
初期値: 0
$category
整数) (オプション) 指定したカテゴリID の投稿のみを返す。(-3のように)カテゴリID をマイナスにすると、このカテゴリID以外の投稿を返す。複数のカテゴリを指定する場合は、カテゴリIDをカンマで区切る(配列での指定は不可)。
初期値: なし
$category_name
文字列) (オプション) 指定したカテゴリー名またはカテゴリースラッグの投稿のみを返す。
初期値: なし
$tag
文字列) (オプション) 指定したタグスラッグの投稿のみを返す。複数のタグスラッグを指定する場合は、カンマで区切ると、いずれかのタグにマッチした投稿をすべて返す。タグスラッグを空白で区切って指定すると、すべてのタグにマッチした投稿を返す。
初期値: なし
$orderby
文字列) (オプション) 以下に示す様々な値(空白で区切る)で並べ替える。
  • 'author' - 著者ID。
  • 'category' - カテゴリID。
  • 'content' - コンテンツ。
  • 'date' - 作成日。
  • 'ID' - 投稿ID。
  • 'menu_order' - メニュー。ページとアタッチメントでのみ有効。
  • 'mime_type' - MIME type。アタッチメントでのみ有効。
  • 'modified' - 最終更新日
  • 'name' - stub。
  • 'parent' - 親ID。
  • 'password' - パスワード。
  • 'rand' - ランダム。
  • 'status' - ステータス。
  • 'title' - タイトル。
  • 'type' - 投稿タイプ。

注:

初期値: date
$order
文字列) (オプション$orderby でのソート方式。有効な値:
  • 'ASC' - 昇順(低から高)。
  • 'DESC' - 降順(高から低)。
初期値: DESC
$include
文字列) (オプション) 表示したい投稿のID。カンマまたは空白で区切る。次の例では、6 つの投稿を表示する。
  • '45,63,78,94,128,140'
注: このパラメータを使用すると posts_per_page, offset, category, exclude, meta_key, meta_value, および post_parent パラメータを上書きします。
初期値: なし
$exclude
文字列) (オプション) 表示したくない投稿のID。カンマまたは空白で区切る。( $include パラメータを参照)
初期値: なし
$meta_key and $meta_value
文字列) (オプション) メタフィールド(カスタムフィールド)のキーと値を持つ投稿のみ表示する。両方のパラメータ指定が必要(一方だけでは動作しない)。
初期値: なし
$post_type
文字列) (オプション) 表示する投稿のタイプ。利用可能なオプション:
  • post - デフォルト
  • page
  • attachment
  • any - 全て
初期値: post
$post_status
文字列) (オプション) 指定したステータスの投稿を表示する。複数のステータスを指定する場合はカンマで区切る。利用可能なオプション:
  • publish - デフォルト
  • private
  • draft
  • future
  • inherit - $post_type がアタッチメントのときのデフォルト
  • (blank) - すべてのステータス(WordPress version 2.8 以降では、'any' を使用する。変更された時期は不明。)
初期値: publish
$post_parent
整数) (オプション) このIDの投稿の子のみを表示する。
初期値: なし
$nopaging
真偽値) (オプション) ページングを有効/無効にする。ページングを無効にすると $numberposts オプションが無視される。
初期値: なし

最新英語版: WordPress Codex » Template Tags/get posts最新版との差分

記事

コード・ドキュメンテーション

  • クラス: WP_Query - WP_Query クラスの詳細な全容
  • クラス: WP_Comment_Query - コメント関連のクエリのためのクラス
  • クラス: WP_User_Query - ユーザー関連のクエリのためのクラス
  • オブジェクト: $wpdb - $wpdb オブジェクトの使い方全容
  • 関数: set_query_var()
  • 関数: get_query_var()
  • 関数: query_posts() - 追加のカスタムクエリを作成
  • 関数: get_post() - 項目の ID を取得しデータベース内にあるその投稿のレコードを返す
  • 関数: get_posts() - 投稿の配列を返すことに特化した関数
  • 関数: get_pages() - ページの配列を返すことに特化した関数
  • 関数: have posts() - クエリが投稿を返すか否かを判断する条件関数
  • 関数: the_post() - クエリ後に自動的にループを設定する
  • 関数: rewind_posts() - 現状のループをリセットする
  • 関数: setup_postdata() - ループ内で個別の結果を得るためのクエリデータを設定する
  • 関数: wp_reset_postdata() - 直前のクエリを復元する (通常はループ内の別のループの後に用いられる)
  • 関数: wp_reset_query()
  • 関数: is_main_query() - 変更されるクエリがメインのクエリであることを確認する
  • アクションフック: pre_get_posts - WordPressクエリが実行される前に変更する
  • アクションフック: the_post - post クエリの後で post オブジェクトを変更する
  • フィルターフック: found_posts - WP_Query オブジェクトの found_posts 値を変更する


関数リファレンステンプレートタグ目次もご覧ください。