สถานที่ที่เหมาะสมในการลงทะเบียน / เข้าคิวสคริปต์และรูปแบบคือที่ไหน


43

ฉันใช้ WordPress 3.1.4 ตอนนี้ ฉันสับสนกับที่ฉันใช้ (ซึ่งตะขอ)

  • เพื่อลงทะเบียนและ / หรือเข้าคิว
  • สคริปต์และสไตล์
  • ทั้งด้านหน้าและด้านหลัง?

คำถาม:

  • ตะขออันไหนที่ควรใช้?
  • ฟรอนต์เอนด์สคริปต์ / รูปแบบการลงทะเบียนส่วนหน้าทั้งหมดinitหรือไม่
  • ทำไมถึงไม่มีadmin_print_styles-{xxx}?

คำตอบ:


62

ทำไมการลงทะเบียนและเข้าคิวจึงมีความสำคัญ

  • มันควรจะทันเวลา - เร็วกว่าสคริปต์ / รูปแบบจะพร้อมสำหรับการส่งออกไปยังหน้ามิฉะนั้นมันจะสายเกินไป;

  • มันควรจะเป็นแบบมีเงื่อนไข - ไม่เช่นนั้นคุณกำลังโหลดสิ่งที่คุณไม่ต้องการและทำให้เกิดปัญหาด้านประสิทธิภาพและการทำงานสำหรับสิ่งนี้คุณต้องโหลดสภาพแวดล้อม WP ไปยังขั้นตอนปลาย

กระบวนการสามขั้นตอน

  1. register - นี่จะอธิบายรายละเอียด WP เกี่ยวกับสคริปต์ / สไตล์และทำให้มันเก็บข้อมูลนั้น

  2. enqueue - (มักถูกรวมเข้ากับการลงทะเบียนในการwp_enqueue_*()โทรครั้งเดียว) - สิ่งนี้จะบอก WP ให้เพิ่มสคริปต์ / สไตล์ให้กับคิวตามการตั้งค่า (การอ้างอิงการโหลดส่วนหัว / ส่วนท้าย)

  3. พิมพ์ - สิ่งนี้เกิดขึ้นเมื่อ WP ประมวลผลคิวพยายามโหลดบางอย่างที่เฉพาะเจาะจงสำหรับตัวเองหรือเมื่อคุณใช้wp_print_*()ฟังก์ชันอย่างชัดเจน

โครงสร้างส่วนหน้าของฟังก์ชั่นและตะขอ

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «นี่คือสิ่งที่คุณต้องการ

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

มันลึกลงไปมาก แต่มันง่ายและดีพอสำหรับจุดสำคัญ:

  • wp_enqueue_scriptsเป็นเบ็ดที่เหมาะสมที่สุดสำหรับการลงทะเบียนและเข้าคิวสคริปต์และสไตล์ที่ส่วนหน้าและมีเฉพาะสำหรับที่

  • initมีอะไรจะทำอย่างไรกับเรื่องนี้มันจะทำงาน แต่ - ที่ผ่านมาคำแนะนำ Codex จะใช้เพียง แต่มันไม่ถูกต้อง ;

  • คุณสามารถออกไปกับสคริปต์การเข้าคิว (ไม่สไตล์) สำหรับส่วนท้ายที่จุดใด ๆ ก่อนที่จะwp_print_footer_scripts()โทร;

  • wp_print_*hooks ไม่เหมาะสำหรับการลงทะเบียน / คิวพวกเขาเป็นคะแนนในรหัสเมื่อมีการส่งออกเกิดขึ้นแล้ว เหมาะสำหรับเอาต์พุตสคริปต์ / สไตล์ / กำหนดเอง

แล้วผู้ดูแลระบบล่ะ?

ฟังก์ชั่นการใช้งานนั้นมีความซับซ้อนซับซ้อนและซ้อนกันมากขึ้น

  • สำหรับผู้เริ่มต้นใช้admin_enqueue_scriptsเบ็ด (มันผ่านไป$hook_suffixทั่วโลกสำหรับสิ่งของที่มีเงื่อนไข ) สำหรับทุกอย่างมันจะทำอย่างดีสำหรับกรณีส่วนใหญ่

  • เมื่อคุณต้องการบางสิ่งที่ซับซ้อน - มองผ่านadmin-header.phpและขุดจากที่นั่นเพื่อขอตะขอที่เหมาะสม

แล้วล็อกอินล่ะ?

login_enqueue_scriptsมีตะขอเฉพาะที่มีชื่อเป็น


อืมในคำตอบอีกคำถามอื่นadmin_print_scripts-{xxx}ผมขอแนะนำ ฉันพบว่าadmin_print_scriptsถูกเรียก แต่ไม่ได้มี-{xxx}เช่น -edit.phpตัวอย่างเช่น. คำตอบของการจัดคิวด้วยวิธีที่ถูกต้องคือadmin_print_scripts-xxxอะไรและคุณจะแนะนำอะไรแทน - สมมติว่าฉันต้องการรวมสคริปต์ / สไตล์ในหน้าเพิ่ม / แก้ไขประเภทโพสต์ที่กำหนดเอง (สำหรับ metabox)
JM at Work

5
@JM at Work ตามความเห็นส่วนตัวของฉัน - อยู่ให้ห่างจาก*print*hooks เว้นแต่คุณจะรู้ว่าทำไมคุณถึงต้องการมัน และโดยรวมพวกเขาสำหรับการพิมพ์ไม่คิว admin_enqueue_scriptshooks ผ่าน$hook_suffixตัวแปรที่เหมือนกับที่ใช้ใน hooks แบบไดนามิกเหล่านั้น
Rarst

$hook_suffixดูเหมือนว่า post.php ในหน้าแก้ไขผลงานของฉันทำไมถึงเป็นเช่นนั้น ฉันคิดว่ามันเป็น edit.php ฉันจะทราบได้อย่างไรว่าฉันกำลังแก้ไข / โพสต์ผลงาน & ไม่ใช่โพสต์ปกติ?
JM ที่ทำงาน

@JM at Works สุจริตว่าตัวแปรค่อนข้างน่ารังเกียจ :) ในปลั๊กอินของตัวเองมันง่ายที่จะจัดการกับมัน (การกลับมาของadd_*_page()ฟังก์ชั่น) แต่ในหน้าจอ WP พื้นเมืองมันอาจเป็นสิ่งที่แตกต่างกัน
Rarst

น่าเสียดายที่เมื่อฉันเปลี่ยน hook จาก wp_footer เป็น wp_enqueue_scripts หรือ admin_print_scripts CSS จะหายไปและไม่ปรากฏที่ใดก็ได้ในซอร์สโค้ด นี่คือรหัสที่ฉันใช้: add_action ('wp_enqueue_scripts', 'addCSS'); ไม่สามารถใช้งานได้มันใช้งานได้ add_action ('wp_enqueue_scripts', 'addCSS'); ยกเว้นจะเพิ่ม CSS ลงในท้ายกระดาษอย่างชัดเจน ผมทำอะไรผิดหรือเปล่า?
Talon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.