ประสิทธิภาพด้วย autoload และตารางตัวเลือก


12

ฉันกำลังเล่นกับautoloadคอลัมน์ของoptionsตาราง ฉันไม่พบข้อมูลมากนักเกี่ยวกับวิธีใช้ค่าที่โหลดอัตโนมัติ ฉันพยายามprint_r($GLOBALS)และเห็นว่าตัวเลือก autoloaded $GLOBALS['wp_object_cache']->cache['options']['alloptions']จะถูกเก็บไว้ใน

มีวิธีอื่นในการเข้าถึงตัวแปรเหล่านั้นหรือไม่

สมมติว่าฉันต้องเข้าถึงตัวเลือกmy_optionซึ่งตั้งค่าเป็น autoload หลายครั้งในเทมเพลตที่แตกต่างกัน (เช่นในheader.phpครั้งเดียวครั้งเดียวfooter.php) วิธีใดที่แนะนำ

  1. เป็นไรไหมที่ฉันจะเรียกคืนจาก$GLOBALSอาเรย์ (เนื่องจากมีค่าอยู่ที่นี่แล้ว)
  2. ฉันต้องใช้get_option('my_option')ครั้งเดียวและทำให้ตัวแปรเป็นโกลบอลอีกครั้ง
  3. ใช้get_option('my_option')แต่ละครั้ง (ซึ่งฉันไม่เห็นจุดทำ)
  4. อื่น ๆ อีก

คำตอบ:


23

ฉันไม่พบข้อมูลมากนักเกี่ยวกับวิธีใช้ค่าที่โหลดอัตโนมัติ

ไม่มีกรณีพิเศษสำหรับตัวเลือกที่โหลดอัตโนมัติพวกเขาจะใช้ในลักษณะเดียวกับตัวเลือกปกติอื่น ๆ แต่ให้คิดออกว่าautoloadคอลัมน์ของoptionsตารางหมายถึงอะไร คอลัมน์นี้พิจารณาว่าเราจำเป็นต้องดึงข้อมูลตัวเลือกในขั้นตอนการเริ่มต้นของคำขอหรือเราควรดึงข้อมูลตัวเลือกตามต้องการเท่านั้น

แต่เมื่อการโหลดอัตโนมัตินี้เกิดขึ้นและฟังก์ชั่นทำอะไร ตัวเลือกautoloadทั้งหมดจะถูกโหลดและแคชโดยwp_load_alloptionsฟังก์ชั่นซึ่งถูกเรียกโดยis_blog_installedฟังก์ชั่นที่จุดเริ่มต้นของการร้องขอ HTTP แต่ละจัดการโดย WP

ให้สรุป: ตัวเลือกโหลดอัตโนมัติเป็นตัวเลือกเดียวกัน แต่โหลดที่จุดเริ่มต้นของการประมวลผลคำขอ HTTP โดย WP

สมมติว่าฉันจำเป็นต้องเข้าถึงตัวเลือก ... แนะนำวิธีใด?

  1. มันเป็นวิธีการที่ไม่ดีในการเรียกคืนจาก$GLOBALSโดยตรงใช้get_optionแทน
  2. Globalize ตัวแปรที่กำหนดเองไม่ได้รับการต้อนรับและแนะนำให้ทำน้อยที่สุดเท่าที่จะทำได้
  3. จากมุมมองของฉันมันเป็นตัวเลือกที่ดีที่สุดสำหรับคุณ
  4. อย่าคิดอะไรอย่างอื่น :)

ทำไมต้องใช้get_optionฟังก์ชั่นในแต่ละครั้งเป็นตัวเลือกที่ดีที่สุด? เพราะ:

  1. สิ่งแรกและสิ่งที่สำคัญที่สุดเพราะ : คุณสามารถมั่นใจได้ว่ามันจะกลับมาเป็นค่าที่ทันสมัยทุกครั้งที่คุณเรียกมันว่า
  2. มันจะแคชเพื่อนำมาใช้ใหม่ในอนาคต
  3. อนุญาตให้ปลั๊กอินและชุดรูปแบบอื่น ๆ เชื่อมต่อตัวเลือกของคุณโดยการขอตัวoption_optionnameกรอง
  4. มันจะดึงข้อมูลตัวเลือกหากยังไม่ได้โหลด

1
+1 คำตอบที่ให้ข้อมูลมาก ไม่เคยได้ยินเกี่ยวกับเบ็ดตัวเลือกก่อน :)
RRikesh

@rrikesh ยินดีต้อนรับหวังว่ามันจะอธิบายได้ดีพอ
Eugene Manuilov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.