各ページ右上の画像広告経由でコンピュータウィルスがダウンロードされた可能性があります。ウィルスチェックをお願いします。詳しくは http://bono.s201.xrea.com/2008/06/693-virus_by_xrea_ad/ をご覧ください。ご迷惑をおかけしてしまい大変申し訳ありません。

テンプレートタグ/get posts

出典: ps*wiki

目次

説明

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

使い方

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

用例

リストの生成

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

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

注: 上記クエリは、1件以上の記事があるカテゴリで使うべき。

別のリストの生成

ウェブページに 10件の記事をアルファベット順に表示したいとき、投稿日・タイトル・抜粋文を出すには次のようにします。

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

全ての投稿データにアクセス

様々な理由から、デフォルトでは、記事 ID や the_content() 経由での記事本文といったいくつかのデータが get_posts で取得できません。これは、内部関数 setup_postdata()$post 配列で呼ぶことにより解決できます。

<?php
$lastposts = get_posts('numberposts=3');

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

setup_postdata を呼ばずに ID 等を取得する別の方法としては、"$post->ID""$post->post_data"(記事本文)を持ちます。これで内部関数を呼ぶことを避けられます。 (訳注:こちらの方が望ましいのか?)

パラメータ

numberposts
整数) 取得する投稿の数。初期値は 5
offset
整数) 先頭から何件の投稿を除外するか。初期値は 0(除外しない)。
category
整数) 指定したカテゴリID の投稿のみを返す。初期値はなし(全カテゴリ)。
orderby
文字列) どの項目の値で投稿をソート(並べ替え)するか。次の値など:
  • 'post_title' - ページ/記事タイトルのアルファベット順にソート (初期値)
  • 'post_date' - 投稿日時順にソート
  • 'post_modified' - 最終更新日時順にソート
  • 'ID' - 投稿ID でソート
  • 'post_author' - 著者の ID 番号でソート
  • 'post_name' - 投稿スラッグのアルファベット順にソート
  • 注: この値は wp_post テーブル のどのフィールド名でも指定できる。
order
文字列) ソート順。有効値:
  • 'ASC' - 昇順(値 小→大)にソート
  • 'DESC' - 降順(値 大→小)にソート (初期値)

注: 以下のパラメータは、WordPress バージョン 2.1 以降で指定できます。2.0.x 系では使えません。

これ以降はラフドラフトです。

  • これ以降の内容はまだ検証が済んでいません。情報が間違っていたり書き直されることがあります。


include
文字列) 特定の投稿のみを取得したいとき、投稿ID をカンマ区切りで指定。例えば、'include=4,12' とすれば、記事ID 4 と 12 の記事データのみを返す。このパラメータを指定すると、offset, category, exclude, meta_key, meta_value, post_parent パラメータの指定は無視される。初期値はなし(指定なし)。
exclude
文字列) 特定の投稿を除外したいとき、投稿ID をカンマ区切りで指定。例えば、'exclude=4,12' とすれば、記事ID 4 と 12 の記事データは返さない。include パラメータを指定すると無視される。初期値はなし(除外なし)。
meta_key
文字列) 特定のカスタムフィールドを持つ投稿のみを取得したいとき、そのキーを指定。たぶん meta_value パラメータとセットで指定。include パラメータを指定すると無視される。初期値はなし。
meta_value
文字列) 特定のカスタムフィールドを持つ投稿のみを取得したいとき、その値を指定。たぶん meta_key パラメータとセットで指定。include パラメータを指定すると無視される。初期値はなし。
post_type
文字列) 指定した投稿タイプの投稿のみを返す。有効値:
post_status
文字列) 指定した投稿ステータスの投稿のみを返す。有効値:
  • 'publish' - 公開(初期値)
  • 'draft' - 草稿
  • 'private' - プライベート
  • 'static' - 2.1 以降では使われていないかも
  • 'object'
  • 'attachment'
  • 'inherit'
  • 'future' - 予約投稿
  • 'pending' - ペンディング(2.3 以降でのみ指定可)
post_parent
整数) 特定の「ページ」の子ページのみを取得したいとき、親ページの ID を指定。include パラメータを指定すると無視される。初期値は 0(指定なし)。

原文・最新版: WordPress Codex » Template Tags/get posts

外部リンク

bloginfo, bloginfo_rss, get_bloginfo, get_bloginfo_rss, wp_title, get_archives, wp_get_archives, get_calendar, get_posts, wp_list_pages, wp_dropdown_pages, wp_loginout, wp_register, query_posts, rss_enclosure

MediaWiki
他の言語