WordPress โหลดไฟล์ปลั๊กอินในลำดับใด


21

มีการโหลดปลั๊กอินอะไรใน WordPress?

และภายในโฟลเดอร์ของปลั๊กอินเฉพาะคำสั่งใดบ้างที่จะโหลด


คุณสามารถดีบักอย่างลึกล้ำได้ด้วยปลั๊กอินนี้: https://wordpress.org/plugins/whats-running/มันแสดงรายการไฟล์ที่จำเป็นทั้งหมดใน WordPress
Szépe Viktor

คำตอบ:


26

ตอบคำถามแรก:

  1. ในwp-settings.phpWordPress ตรวจสอบปลั๊กอินที่ต้องใช้ก่อน (ปลั๊กอินในmu-pluginsโฟลเดอร์ทางเลือก) ก่อนและโหลดปลั๊กอินเหล่านั้น

  2. จากนั้นหากคุณใช้การติดตั้งหลายไซต์มันจะตรวจสอบปลั๊กอินที่เปิดใช้งานเครือข่ายและโหลดไฟล์เหล่านั้น

  3. จากนั้นจะตรวจสอบปลั๊กอินที่ใช้งานอื่น ๆ ทั้งหมดโดยดูที่active_pluginsรายการของwp_optionsตารางฐานข้อมูลและวนซ้ำไปเรื่อย ๆ ปลั๊กอินจะแสดงรายการตามตัวอักษร

นี่คือการสั่งซื้อ WordPress โหลดทุกอย่างสวย ๆ : http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request

สิ่งนี้คือโดยปกติไม่สำคัญว่าจะเรียงลำดับปลั๊กอินแต่ละตัวอย่างไรเพราะปลั๊กอินที่เขียนอย่างถูกต้องจะใช้ WordPress hooks ซึ่งช่วยให้คุณเชื่อมต่อการทำงานเข้ากับจุดเฉพาะในภายหลังในการเริ่มต้น WordPress (ปลั๊กอินที่เขียนอย่างเหมาะสมจะนำหน้าฟังก์ชั่นและคลาสของตัวเองเพื่อไม่ให้เกิดความขัดแย้ง)

ข้อมูลเพิ่มเติมเกี่ยวกับปลั๊กอิน API: http://codex.wordpress.org/Plugin_API/

ตอบคำถามที่สอง:

ทั้งหมดขึ้นอยู่กับปลั๊กอิน WordPress โหลดไฟล์เดียวในปลั๊กอินไฟล์ที่มักจะตั้งชื่อthe-plugin-name.phpและมีชื่อคำอธิบายผู้แต่ง ฯลฯ ที่ด้านบน มันขึ้นอยู่กับปลั๊กอินที่จะโหลดส่วนที่เหลือของไฟล์ที่ใช้require_onceและwp_enqueue_scriptและ whatnot


ดังนั้นหากฉันสร้างปลั๊กอินจากนั้นปล่อยปลั๊กอินเสริมที่ควรทำงานหลังจากเรียกใช้ปลั๊กอินดั้งเดิมในภายหลังฉันจะมั่นใจได้อย่างไรว่าได้สั่งซื้อแล้ว
urok93

มันขึ้นอยู่กับสิ่งที่คุณพยายามทำ แต่โดยทั่วไปคุณจะต้องตั้งค่าแต่ละรายการให้ทำงานบน hook ที่ระบุโดยใช้ฟังก์ชัน add_action () ซึ่งช่วยให้คุณสามารถกำหนดลำดับความสำคัญได้ codex.wordpress.org/Function_Reference/add_action
เสาร์ที่

@SeventhSteel แต่จะเกิดอะไรขึ้นถ้าปลั๊กอินอาศัย hook ที่สร้างโดยปลั๊กอินอื่น หากหนึ่งปลั๊กอินใช้apply_filters()ในการสร้างเบ็ด แต่ทำงานก่อนปลั๊กอินที่ใช้add_filter()แล้วมันจะยังคงทำงานได้หรือไม่ ดูเหมือนว่าapply_filters()จะมีเหตุมีผลแล้วดังนั้นการadd_filter()โทรในปลั๊กอินที่สองจะไม่ทำอะไรเลย มันมีความสำคัญอย่างไรในการเรียงลำดับปลั๊กอินเมื่อใช้ hooks ที่สร้างโดยปลั๊กอินเท่านั้น?
trusktr

สิ่งที่สำคัญคือสิ่งที่โหลดเมื่อเวลาapply_filters()ผ่านไป ต้องทำงานก่อนadd_filter() apply_filters()ถ้าadd_filter()อยู่ในแฟ้มปลั๊กอินและไม่อยู่ในฟังก์ชั่นอื่นก็จะทำงานบนตะขอซึ่งโดยทั่วไปจะเกิดขึ้นก่อนที่คุณจะต้องplugins_loaded apply_filters()
SeventhSteel

สถานการณ์ทั่วไปคือการมีปลั๊กอินหลายตัวที่ต่อท้ายเนื้อหาของพวกเขาหลังจากthe_content- ลำดับของลักษณะที่ปรากฏของพวกเขาจะถูกกำหนดอย่างไร?
Dan Knauss

9

ฉันพบว่ามันมีประโยชน์ที่จะรวมการกระทำ 'โหลดช้า' ในปลั๊กอินของฉันที่ทำงานหลังจากปลั๊กอินทั้งหมดเสร็จสิ้นการโหลดเช่นนี้:

add_action('plugins_loaded', 'my_late_loader');

ฟังก์ชั่น my_late_loader นั้นเริ่มต้นหลังจากปลั๊กอินอื่น ๆ ทั้งหมดซึ่งอนุญาตให้ฉันใช้ hooks ที่กำหนดโดยปลั๊กอินอื่น ๆ ในฟังก์ชั่นของฉันเอง my_other_function ซึ่งเริ่มต้นภายใน my_late_loader

/**
 * Late loading function for actions that must run after all plugins 
 * have loaded
 */
function my_late_loader(){
    add_action( 'some_hook', 'my_other_function', 10, 1);
}

บิตที่ซับซ้อน (ฉันรู้) แต่สิ่งนี้ทำให้มั่นใจได้ว่าตะขอในปลั๊กอินอื่น ๆ จะถูกสร้างขึ้นก่อนที่จะถูกเพิ่มโดยไม่คำนึงถึงลำดับการโหลดปลั๊กอิน

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