เงื่อนไขที่if ( isset($wp_filter['all']) ) {
คุณสามารถหาได้ในฟังก์ชั่นการสร้างเบ็ดเหล่านี้:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
ความแตกต่างระหว่างสิ่งเหล่านี้เป็นจำนวนข้อโต้แย้งที่ส่ง เราจำเป็นต้องมีหลายอาร์กิวเมนต์ดังนั้นref_array
หรืออาร์กิวเมนต์เดียว ความแตกต่างอื่น ๆ "การกระทำกับตัวกรอง" เป็นเรื่องง่ายการกระทำสามารถทำหน้าที่ใด ๆ / การกระทำและชื่อตัวกรองจะถูกสงวนไว้สำหรับฟังก์ชั่นที่ใช้ข้อมูลสตริงและกลับข้อมูลที่กรอง
ตกลงนี่คือวิธีสร้างตะขอ และ hooks มีชื่อและคุณสามารถตกปลาได้หลายชื่อฟังก์ชั่นในชื่อ hook เดียวกัน (read: tag)
แต่เมื่อคุณกำหนดฟังก์ชั่นทั้งหมดที่เกี่ยวข้องกับ hooks เฉพาะคุณจะต้องจัดเก็บชื่อ hook และชื่อฟังก์ชันที่เกี่ยวข้อง นี่คือเหตุผลที่เราช่วยเหลือglobal $wp_filter
ใน WordPress หากคุณส่งออกตัวแปรที่คุณจะได้รับเช่น ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
ขอให้เราอย่าเถียงกับชื่อของตัวแปรนี้ โดยส่วนตัวแล้วฉันจะเรียกมันว่าแตกต่างกันน่าจะเป็น$wp_hooks
เพราะไม่ได้ใช้ชื่อนี้ อย่างไรก็ตามหากเราได้รับกลับมาในประวัติศาสตร์เราจะพบว่าdo_action
มีตั้งแต่@since 1.2.0
และapply_filters
เป็น@since 0.71
(เปิดตัว 9 มิถุนายน 2003) $wp_filter
ที่ช่วยให้คุณมีคำอธิบายที่ดีงามเหตุผลที่เรียกว่า เป็นไปได้มากที่สุดเนื่องจากตัวกรองถูกนำมาใช้ครั้งแรกใน WordPress หลังจากนั้นพวกเขาก็แนะนำการกระทำ
เพียงสร้างการพูดจาก @TheDeadMedic ...
add_action ('ทั้งหมด', 'อะไรก็ตาม') จะหมายถึงสิ่งที่ไฟไหม้สำหรับทุก do_action โดยไม่คำนึงถึงชื่อของเบ็ด
ฉันตั้งคำถามที่ว่าทำไมเราต้องการ$wp_filter['all']
? เพียงไม่กี่ตัวอย่าง วิปัสสนาการทดสอบและความน่าจะเป็นของคุณสมบัติภายในระบบในรุ่น WordPress ในอนาคต