ไม่มีข้อ จำกัด และไม่มีการลงโทษประสิทธิภาพ เพื่อให้เข้าใจว่าทำไมคุณต้องเข้าใจว่าตะขอทั้งหมดถูกเก็บไว้ในระบบนิเวศ WP อย่างไร
ก่อนอื่นคุณต้องเข้าใจว่าตะขอทั้งหมดถูกเก็บไว้ที่ไหนและทำอย่างไร hooks สำหรับตัวกรองและการกระทำทั้งหมดจะถูกเก็บไว้ในตัวแปรทั่วโลกที่เรียกว่าwp_filter
ใช่ใช่การกระทำ hooks จะถูกเก็บไว้ในตัวแปรนี้เช่นกัน ตัวแปรนี้เป็นอาเรย์ที่เกี่ยวข้องโดยที่สำคัญคือชื่อของการกระทำหรือตัวกรองและค่าเป็นอาเรย์ที่เชื่อมโยงกันอีกอันหนึ่ง ตัวอย่างเช่นลองมาดูการกระทำ 'init' ในขั้นตอนนี้เราจะเห็นโครงสร้างต่อไปนี้:
$wp_filter = array(
'init' => array(...),
);
อาร์เรย์ย่อยนี้มีคีย์ตัวเลขและค่าเป็นอาร์เรย์ ปุ่มตัวเลขเป็นสิ่งสำคัญของเรา อาร์เรย์ที่เกี่ยวข้องกับแป้นตัวเลขมีรายการ hooks ที่มีลำดับความสำคัญเท่ากัน ดังนั้นหากเราโทรadd_action( 'init', 'wpse8170_my_first_init', 20 )
แล้วโทรออกadd_action( 'init', 'wpse8170_my_second_init', 20 )
และโทรในที่สุดadd_action( 'init', 'wpse8170_my_third_init', 10 )
ตัวอย่างของเราจะมีลักษณะดังนี้:
$wp_filter = array(
'init' => array(
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
10 => array(
'wpse8170_my_third_init' => array(...),
),
),
);
ตอนนี้เมื่อinit
การกระทำถูกเรียกใช้ hooks ทั้งหมดจะถูกจัดเรียงด้วยการใช้งานksort
ฟังก์ชั่นและอาร์เรย์ของเราตอนนี้:
array(
10 => array(
'wpse8170_my_third_init' => array(...),
),
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
),
และตะขอทั้งหมดจะถูกดำเนินการในคิวนี้: ครั้งแรก'wpse8170_my_third_init'
แล้วและในที่สุด'wpse8170_my_first_init'
'wpse8170_my_second_init'
ดังนั้นคุณจะเห็นว่าไม่มีข้อ จำกัด และการลงโทษและคุณสามารถใช้ค่าใด ๆ ที่ยอมรับได้ว่าเป็นกุญแจสำคัญสำหรับอาร์เรย์ที่เกี่ยวข้องโดยสภาพแวดล้อม PHP ของคุณ