setup_postdata ($ post) ทำอะไร


13

Codex กำหนดเป็น 'ตั้งค่าข้อมูลการโพสต์ทั่วโลก ช่วยในการจัดรูปแบบผลลัพธ์แบบสอบถามที่กำหนดเองสำหรับการใช้แท็กแม่แบบ ' ฉันไม่เข้าใจสิ่งนี้จริงๆ

นี่คือตัวอย่างรหัส:

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

คุณช่วยอธิบายได้มั้ย

คำตอบ:


16

ฟังก์ชันแท็กเทมเพลตพึ่งพาตัวแปรทั่วโลกในการเข้าถึงโพสต์ที่ถูกประมวลผลและดึงข้อมูลจากมันหรือเกี่ยวข้องกับมัน

ตัวแปรหลักของพวกเขาคือ$postที่เก็บวัตถุโพสต์เอง ในตัวอย่างของคุณมันไม่ชัดเจน แต่สิ่งที่เกิดขึ้นคือว่าลูปของคุณกำหนดข้อมูลให้$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.