ตัวกรองคืออะไร
ตัวกรองเป็นฟังก์ชั่นที่ WordPress ส่งผ่านข้อมูล ณ จุดที่กำหนดในการดำเนินการก่อนดำเนินการกับข้อมูล (เช่นการเพิ่มลงในฐานข้อมูลหรือส่งไปยังหน้าจอเบราว์เซอร์) ตัวกรองอยู่ระหว่างฐานข้อมูลและเบราว์เซอร์ (เมื่อ WordPress กำลังสร้างหน้า) และระหว่างเบราว์เซอร์และฐานข้อมูล (เมื่อ WordPress กำลังเพิ่มโพสต์และความคิดเห็นใหม่ลงในฐานข้อมูล); อินพุตและเอาต์พุตส่วนใหญ่ใน WordPress ผ่านตัวกรองอย่างน้อยหนึ่งตัว WordPress ทำการกรองตามค่าเริ่มต้นและปลั๊กอินของคุณสามารถเพิ่มตัวกรองของตัวเองได้
ขอเกี่ยวเป็นตัวกรอง
เพื่อให้ผู้ใช้เปลี่ยนข้อมูลเฉพาะบางอย่าง (ค่า, เอาท์พุทของฟังก์ชั่นอื่น ๆ ) ตัวกรองฮุกมีให้ผ่านapply_filters
ฟังก์ชั่น
hooks ตัวกรองเหล่านี้มีชื่อ (หรือแท็ก ) ของตัวกรองและอย่างน้อยชื่อฟังก์ชั่นที่จะใช้ในการกรอง (เช่นเปลี่ยนแปลงในทางใดทางหนึ่ง) ข้อมูล
หากต้องการเปลี่ยนชื่อของโพสต์คุณสามารถใช้the_title
ตะขอตัวกรองซึ่งกำหนดไว้ดังนี้:
apply_filters( 'the_title', $title, $id );
ซึ่งหมายความว่าตัวกรองมีแท็ก / ชื่อthe_title
พารามิเตอร์แรก$title
คือข้อมูลที่จะเปลี่ยนแปลง (เช่นชื่อโพสต์) และพารามิเตอร์ที่สอง$id
คือข้อมูลเพิ่มเติม (ในกรณีนี้คือรหัสโพสต์)
หากต้องการแสดงชื่อของทุกโพสต์ใน UPPERCASE คุณสามารถใช้บรรทัดต่อไปนี้:
add_filter('the_title', 'strtoupper');
ถ้าเราดูที่add_filter
ฟังก์ชั่นเราจะเห็นว่ามันถูกกำหนดดังนี้:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
เราระบุพารามิเตอร์ที่หนึ่งและที่สอง (จำเป็น) ในขณะที่พารามิเตอร์ที่สามและสี่ถูกตั้งค่าเป็นค่าเริ่มต้นที่เกี่ยวข้อง (เช่น10
และ1
)
ตัวกรองที่ซับซ้อนมากขึ้น
หากคุณต้องการกรองเฉพาะบางโพสต์คุณสามารถใช้ข้อมูลเพิ่มเติม (ในกรณีของตัวกรองนี้: ID) ในการทำเช่นนั้นคุณต้องระบุจำนวนพารามิเตอร์ (ซึ่งคือ 2 ในกรณีนี้) และเพื่อที่จะทำเช่นนี้อีกครั้งคุณต้องระบุพารามิเตอร์ลำดับความสำคัญ (ซึ่งมาก่อนจำนวนอาร์กิวเมนต์)
สมมติว่าเราต้องการส่งผลกระทบเฉพาะชื่อของโพสต์ที่มี ID 42 จากนั้นจะมีลักษณะดังนี้:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
ในกรณีนี้เราต้องระบุพารามิเตอร์ทั้งสี่ที่มีอยู่
ฉันมีพารามิเตอร์อะไรบ้าง
ในการระบุพารามิเตอร์ (จำนวน) ที่มีอยู่ของตัวกรองบางตัวคุณจะต้องค้นหาตำแหน่งที่กำหนดไว้ (ในกรณีนี้: ที่นี่ )
การอ้างอิง :