setup_postdata($ post)は何をしますか?


13

コーデックスは、「グローバルな投稿データを設定する」と定義しています。テンプレートタグを使用するためのカスタムクエリ結果の書式設定に役立ちます。私はこれを本当に理解していません。

コード例を次に示します。

global $post;
$args = array( 'numberposts' => -1);
$posts = get_posts($args);
foreach( $posts as $post) : setup_postdata($post);
echo $post->ID;
endforeach; 

説明してもらえますか?

回答:


16

テンプレートタグ関数は、グローバル変数に依存して、処理中の投稿にアクセスし、そこからまたは関連するデータを取得します。

それらの主な変数は、$postpostオブジェクト自体を保持するものです。あなたの例では明示的で$postはありませ$postんが、繰り返しの名前が明示的に行う必要がない場合、ループはデータをに割り当てます(global $post; $post = $some_other_post;)。

しかし、他のグローバルがたくさんあり、その目的はsetup_postdata()それらにデータを入力することです。ソースを見ると、つまり:

global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;

ほとんどの場合、wp_reset_postdata()後でグローバルを元の状態に戻すために呼び出す必要があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.