Apa yang dilakukan setup_postdata ($ post)?

13

Kodeks mendefinisikannya sebagai 'Mengatur data pos global. Membantu memformat hasil permintaan kustom untuk menggunakan tag Template. ' Saya tidak begitu mengerti hal ini.

Berikut ini contoh kode:

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

Bisakah Anda jelaskan?

mattnewbie
sumber

Jawaban:

16

Fungsi tag templat mengandalkan variabel global untuk mengakses pos yang sedang diproses dan mengambil data darinya atau yang terkait dengannya.

Variabel utama dari mereka adalah $postyang memegang objek posting itu sendiri. Dalam contoh Anda itu tidak eksplisit, tetapi apa yang terjadi adalah bahwa loop Anda memberikan data $post, jika nama untuk iterasi tidak $postAnda perlu melakukannya secara eksplisit ( global $post; $post = $some_other_post;).

Namun ada banyak global lainnya dan tujuannya setup_postdata()adalah untuk mengisinya dengan data. Jika Anda melihat sumbernya yaitu:

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

Perhatikan bahwa dalam banyak kasus Anda harus menelepon wp_reset_postdata()setelah itu untuk mengembalikan global ke keadaan semula.

Jarang
sumber