• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

関数リファレンス/setup postdata

提供: WordPress Codex 日本語版
移動先: 案内検索

投稿情報を各種のグローバル変数へセットします。その変数は、テンプレートタグを使ってカスタムクエリの結果を表示するときに使われます。

setup_postdata() は下記のグローバル変数をセットします:

  • $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages

これらは現在の投稿を参照する多くのテンプレートタグによって使われます。

この関数は $post グローバル変数をセットしませんが、それへのリファレンスを引数とするつもりで設計されています。

使い方

<?php 
global $post;
setup_postdata( $post ); 
?>

パラメータ

$post
オブジェクト) (必須) ひとつの投稿オブジェクト。
初期値: なし

$post グローバル変数へのリファレンスを指定しなければなりません。そうしないと the_title() などの関数が正しく動作しません。

例えば次のようにします:

    global $post;
    
    // 表示したい投稿の詳細情報を $post に割り当てる(他の変数名ではいけない!!!!)
    $post = $post_object;
    
    setup_postdata( $post );
    // ...

これを「厳密に」書くと次のようになります:

    setup_postdata( $GLOBALS['post'] =& $post_object );

下記のコードは正しく動作しません

    global $post;
    
    setup_postdata( $post_object ); // oops

戻り値

この関数はいつも true を返します。

用例

例 1

カテゴリー ID が 1 である投稿のうち、最初の 1 件を飛ばして次から 5 件を取得し、そのタイトルにリンクを付けてリスト表示します。 get_posts() を使って投稿を取得します。

<ul>
<?php
global $post;
$args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :
  setup_postdata($post); ?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; 
wp_reset_postdata(); ?>
</ul>

例 2

すべての公開されている投稿を取得して、タイトルにリンクを付けてリスト表示します。 グローバル変数 $wpdb の get_results メソッドを使って投稿を取得します。

<ul>
<?php
global $wpdb;
global $post;
$str = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'";
$result = $wpdb->get_results($str);
foreach($result as $post):
  setup_postdata($post);?>
	<li><a href="<?php the_permalink()?>"><?php the_title();?></a></li><?php 
endforeach;?>
</ul>


変更履歴

ソースファイル

setup_postdata()wp-includes/query.php に含まれています。

記事

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

  • クラス: 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 値を変更する


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


最新英語版: WordPress Codex » Function_Reference/setup_postdata最新版との差分