วิธีใช้ WordPress Action hooks ในการปรับแต่งธีม
ธีมลูก WordPress ให้วิธีที่ค่อนข้างง่ายในการปรับแต่งรูปลักษณ์ของธีม หากตัวเลือกของชุดรูปแบบไม่มีตัวเลือกการออกแบบที่เพียงพอคุณสามารถเพิ่มกฎใหม่ลงในไฟล์สไตล์ชีทเริ่มต้นของธีมลูกที่เรียกว่า style.css แต่จะเกิดอะไรขึ้นเมื่อคุณต้องการ ปรับเปลี่ยนการทำงานของชุดรูปแบบ? นั่นเป็นหนึ่งในกรณีที่การกระทำของ WordPress เข้ามาช่วยคุณ.
WordPress ได้รับความนิยมส่วนหนึ่งเป็นเพราะความสามารถในการปรับแต่งสูง WordPress Core เต็มไปด้วย hooks ที่แตกต่างกันซึ่งช่วยให้นักพัฒนาสามารถปรับเปลี่ยนหรือปรับปรุงการทำงานเริ่มต้นได้ ยิ่งกว่านั้นเราได้รับอนุญาตให้รวม ตะขอที่กำหนดเอง ในธีมและปลั๊กอินของเราไปที่ ช่วยให้นักพัฒนาซอฟต์แวร์รายอื่นปรับรหัสของเราได้อย่างง่ายดายตามความต้องการ.
เกี่ยวกับ WordPress Hooks
WordPress hooks ทำงานค่อนข้างคล้ายกับ hooks ในชีวิตจริงในแง่ที่ว่าคุณสามารถจับปลาที่คุณต้องการในจุดที่ถูกต้องถ้าคุณใช้มันอย่างถูกต้อง.
คุณสามารถ ลบฟังก์ชั่นที่จับได้ (เช่นคุณสามารถลบแถบผู้ดูแลระบบ WordPress สำหรับผู้ใช้ระดับต่ำ) ได้ ทิ้งไว้เหมือนเดิม และ ปรับปรุงมัน ด้วยฟังก์ชั่นของคุณเอง (เช่นคุณสามารถเพิ่มเมนูหรือพื้นที่วิดเจ็ตเพิ่มเติมให้กับธีม) หรือคุณสามารถ แทนที่มัน (เช่นคุณสามารถปรับเปลี่ยนพฤติกรรมของฟังก์ชั่นหลัก).
WordPress มีสองประเภทที่ต่างกัน: การปฏิบัติ และ ฟิลเตอร์. ในบทความนี้เราจะมาดูว่าเราสามารถ ใช้ประโยชน์จาก hooks การกระทำในการปรับแต่งชุดรูปแบบ.
WordPress hooks ทำงานอย่างไร
เพื่อใช้ภาษาที่ง่ายมาก, การปฏิบัติ ระบุว่า มีบางอย่างเกิดขึ้นระหว่างวงจรชีวิตของหน้า WordPress: มีการโหลดบางส่วนของไซต์มีการตั้งค่าตัวเลือกหรือการตั้งค่าบางอย่างปลั๊กอินหรือวิดเจ็ตได้รับการเริ่มต้นและอื่น ๆ.
ฟิลเตอร์ แตกต่างจาก การปฏิบัติ ในธรรมชาติของพวกเขา พวกเขาเคยชิน ส่งผ่านข้อมูลผ่าน, และ แก้ไขจัดการ หรือ ตัด ก่อนที่จะแสดงผลไปยังหน้าจอหรือบันทึกข้อมูลผู้ใช้ลงในฐานข้อมูล.
ในจุดสังเกตที่สำคัญของวงจรชีวิตของหน้าเวิร์ดเพรสนั้นจะมีทั้ง การกระทำ หรือ กรอง ขอเกี่ยวกับสิ่งที่เราสามารถทำได้ เพิ่มรหัสที่กำหนดเองของเราเพื่อปรับเปลี่ยนพฤติกรรมเริ่มต้น ตามความต้องการของเรา.
การดำเนินการบางอย่างและตัวกรองที่ทำงานในระหว่างการร้องขอขึ้นอยู่กับหน้าใดที่ตัวแทนผู้ใช้ร้องขอ: ตัวอย่างใน hooks ขอโพสต์เดี่ยวที่เกี่ยวข้องกับการโพสต์เดียวจะพร้อมใช้งาน แต่ hooks เกี่ยวข้องกับส่วนอื่น ๆ ของเว็บไซต์ (เช่นพื้นที่ผู้ดูแลระบบ) ไม่ได้.
ค้นหา Action Hooks
ข้อมูลอ้างอิงการดำเนินการของ WordPress Codex ให้ภาพรวมโดยละเอียดของการดำเนินการผ่านคำขอที่แตกต่างกัน สิ่งสำคัญคือถ้าเราต้องการทำงานให้สำเร็จตามที่เราต้องการ ขอเข้าไปในสถานที่ที่เหมาะสม, ไม่ก่อนหรือหลังมิฉะนั้นการกระทำจะไม่เสร็จสมบูรณ์.
ตัวอย่างเช่นถ้าเราต้องการ เพิ่มรหัส Google Analytics ของเราไปยังเว็บไซต์ เราจำเป็นต้อง ขอการกระทำของเราก่อนที่จะโหลดส่วนท้าย.
หากเราพูดถึงการปรับแต่งธีมตะขอแอ็คชั่นอาจมาจากสองที่ที่แตกต่างกัน: จาก WordPress หลัก และ ชุดรูปแบบเอง. มีชุดรูปแบบที่ไม่มีตะขอเลย แต่บางชุดก็มีนักพัฒนาบางคนหรือหลายคน - มันเป็นตัวเลือกของผู้แต่งธีมเสมอ ธีม Twenty Fifteen เริ่มต้นมีเบ็ดการกระทำเพียงหนึ่งเดียวสำหรับการปรับแต่งส่วนท้ายภายใต้ชื่อ 'twentyfifteen_credits'.
หากคุณต้องการเรียกดูซอร์สโค้ดคุณสามารถค้นหา action hooks ได้อย่างง่ายดาย Action hooks ถูกเพิ่มเข้าไปในรหัสด้วยฟังก์ชั่น do_action () WordPress.
หากคุณเรียกใช้การค้นหาอย่างรวดเร็วสำหรับนิพจน์ 'do_action' ในตัวแก้ไขโค้ดขั้นสูง - เหมือนกับที่ฉันทำใน Eclipse ด้านล่าง - คุณสามารถดูรายการเกี่ยวกับจุดที่คุณสามารถเชื่อมการทำงานที่กำหนดเองของคุณเข้ากับแกนกลาง ฉันค้นหาใน / WP-includes / โฟลเดอร์ แต่คุณยังสามารถเรียกใช้การค้นหา / WP-admin / โฟลเดอร์ที่มี hooks การดำเนินการที่เกี่ยวข้องกับแดชบอร์ด WordPress (พื้นที่ผู้ดูแลระบบ).
สิ่งที่ดีคือชื่อของตะขอแอ็คชั่นมักจะอธิบายตัวเองได้ค่อนข้างดี แต่ก็มี มักจะเป็นความคิดเห็นที่ดีในรหัส ที่สามารถให้ความรู้เพิ่มเติมแก่คุณว่าเบ็ดการกระทำที่กำหนดนั้นดีสำหรับเหตุผลที่คุณต้องการใช้หรือไม่.
ตัวอย่างเช่นความคิดเห็นของรหัสก่อนตะขอการกระทำ 'widgets_init' บอกว่ามัน “ไฟไหม้หลังจากวิดเจ็ต WordPress เริ่มต้นทั้งหมดได้รับการลงทะเบียนแล้ว”. หากคุณมองไปที่โค้ดก่อนที่ hook การดำเนินการนี้คุณสามารถค้นหาการเริ่มต้น WP วิดเจ็ตทั้งหมด 'เริ่มต้นก่อน - เพื่อให้คุณมั่นใจได้ว่าความคิดเห็นไม่ได้โกหกและถ้าคุณต้องการลงทะเบียนวิดเจ็ตที่คุณกำหนดเอง นี่จะเป็นจุดที่เหมาะสม.
ในหลายกรณีซอร์สโค้ดให้ข้อมูลแก่เรามากกว่า Codex ดังนั้นจึงเป็นความคิดที่ดีที่จะเรียนรู้วิธีการนำทางอย่างรวดเร็ว.
เพิ่มการกระทำของคุณเอง
เมื่อคุณต้องการเพิ่มการกระทำของคุณเองคุณจะต้อง สร้างฟังก์ชั่นที่กำหนดเอง และ ผูกฟังก์ชั่นนี้กับเบ็ดการกระทำที่เฉพาะเจาะจง โดยใช้ฟังก์ชั่น add_action () WordPress แอ็คชันแบบกำหนดเองที่เพิ่มด้วยฟังก์ชัน add_action () มักเป็น เรียกจุดที่ เมื่อแกนเรียกฟังก์ชัน do_action () ที่เหมาะสม.
ลองมาดูตัวอย่างง่ายๆ.
วิธีการหาตะขอแอ็คชั่นที่คุณต้องการ
สมมติว่าคุณต้องการเพิ่ม favicon ที่กำหนดเองของคุณในเว็บไซต์ของคุณ ก่อนอื่นคุณต้องหาเบ็ดการกระทำที่ถูกต้องที่คุณสามารถผูกฟังก์ชันการทำงานของคุณเอง.
ลองคิดดู หากคุณต้องการเพิ่ม favicon ลงในหน้า HTML ธรรมดาคุณจะใส่มันไว้ที่ไหน? แน่นอนคุณต้องวางไว้ใน
ส่วนของไฟล์ HTML ที่มีมาร์กอัปต่อไปนี้:ดังนั้นการกระทำที่คุณต้องการจะต้องเป็น เกี่ยวข้องกับการโหลดของ มาตรา.
(1) เปิดการอ้างอิงการดำเนินการและดูสิ่งที่มีให้ เราโชคดีราวกับว่าเราดูการกระทำเราสามารถหาได้เพียงหนึ่ง wp_head ซึ่งขึ้นอยู่กับชื่อของมันมีความเป็นไปได้ที่จะเกี่ยวข้องกับการโหลดของ
มาตรา.(2) เพื่อให้แน่ใจว่ามา ตรวจสอบเอกสารใน WordPress Codex. Codex แนะนำว่า “คุณใช้เบ็ดนี้โดยให้ฟังก์ชั่น echo ของคุณส่งออกไปยังเบราว์เซอร์”, ดังนั้นตอนนี้ดูเหมือนว่าจะสมบูรณ์แบบสำหรับเรา แต่ลองตรวจสอบในซอร์สโค้ด.
(3) เนื่องจากเบ็ดนี้ไม่เกี่ยวข้องกับพื้นที่ผู้ดูแลระบบเราจะต้องเรียกใช้การค้นหาของเราใน / WP-includes / โฟลเดอร์ หากเราค้นหาคำว่า 'wp-head' เราจะได้ผลลัพธ์มากมายเนื่องจาก WP Core ใช้การกระทำนี้หลายครั้ง.
เราต้องมองหาจุดที่ได้รับการกำหนดเพื่อค้นหานิพจน์ do_action ('wp_head'. โปรดทราบว่าเรายังไม่เสร็จสิ้นวงเล็บเนื่องจากเรายังไม่แน่ใจว่าการกระทำนี้มีพารามิเตอร์หรือไม่.
Eclipse ส่งคืนผลลัพธ์เดียวเท่านั้นที่สามารถพบได้ใน /wp-includes/general-template.php ไฟล์. ความคิดเห็นก่อนการกำหนดเบ็ดการกระทำบอกว่ามัน “พิมพ์สคริปต์หรือข้อมูลในแท็กส่วนหัวที่ส่วนหน้า”, ดังนั้นตอนนี้เราสามารถมั่นใจได้ว่า wp_head เป็นเบ็ดการกระทำที่เราต้องการ.
ตรวจสอบพารามิเตอร์
เมื่อคุณเพิ่มการกระทำของคุณเองคุณต้องแน่ใจด้วยว่า hook ที่คุณต้องการใช้นั้นใช้พารามิเตอร์หรือไม่ คุณสามารถค้นหาสิ่งนี้ได้อย่างง่ายดายโดยดูที่ฟังก์ชัน do_action ().
ไวยากรณ์ของฟังก์ชัน do_action () มีดังต่อไปนี้:
do_action ('name_of_action' [, $ parameter1, $ parameter2, …])
ต้องการชื่อของการดำเนินการเท่านั้นพารามิเตอร์เป็นทางเลือก หากคุณพบข้อโต้แย้งในการเรียกใช้ฟังก์ชัน do_action () ที่เกี่ยวข้องคุณต้อง รวมไว้ในการประกาศของฟังก์ชั่นที่กำหนดเองที่คุณสร้าง.
หากคุณไม่พบใด ๆ ฟังก์ชั่นที่กำหนดเองของคุณจะต้องทำงานโดยไม่มีข้อโต้แย้ง ในนิยาม do_action () ของ hook การกระทำ wp_head ไม่มีพารามิเตอร์.
ลองเปรียบเทียบกับเบ็ดการกระทำที่ใช้พารามิเตอร์ เบ็ดการกระทำที่เรียกว่า 'wp_register_sidebar_widget' ใช้พารามิเตอร์เดียวที่คุณต้องผ่านไปยังฟังก์ชั่นที่กำหนดเองที่คุณผูกไว้กับเบ็ด.
เรามาดูความแตกต่างในไวยากรณ์ do_action () ของทั้งสองกรณี:
do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);
ในกรณีแรกไม่มีพารามิเตอร์ดังนั้นฟังก์ชันที่กำหนดเองจะใช้ไวยากรณ์ต่อไปนี้:
ฟังก์ชัน my_function_without_parameters () …
ในกรณีที่สองมีหนึ่งพารามิเตอร์ที่คุณต้องผ่านเป็นอาร์กิวเมนต์ในการประกาศฟังก์ชั่นที่กำหนดเองของคุณ:
ฟังก์ชัน my_function_with_parameters ($ widget) …
วิธีการขอฟังก์ชั่นที่กำหนดเองของคุณใน
ตอนนี้เรารู้ทุกสิ่งที่เราต้องการ มาสร้างฟังก์ชั่นที่กำหนดเองเพื่อแสดง favicon บนเว็บไซต์ของเรา.
ขั้นแรกสร้างฟังก์ชั่นใหม่โดยไม่มีข้อโต้แย้งใด ๆ แล้วผูกมันลงใน hook การกระทำ wp_head ด้วยความช่วยเหลือของฟังก์ชั่น add_action () WordPress.
ฟังก์ชั่น custom_add_favicon () echo ''; add_action ('wp_head', 'custom_add_favicon');
คุณจำเป็นต้อง ผ่านชื่อ ของเบ็ดการกระทำ ไปที่ฟังก์ชัน add_action () เป็นข้อโต้แย้งก่อน, จากนั้นคุณต้อง เพิ่มชื่อฟังก์ชั่นที่กำหนดเองของคุณ.
นี่คือพารามิเตอร์ที่จำเป็นสองรายการของ add_action () มันมีสองพารามิเตอร์ทางเลือกด้วย, จัดลำดับความสำคัญ และ ข้อโต้แย้งที่ยอมรับ. เรามาดูวิธีการใช้งานเหล่านี้กัน.
กำหนดลำดับความสำคัญ
มันเกิดขึ้นในหลายกรณีว่ามีการกระทำมากกว่าหนึ่งรายการที่ผูกเข้ากับเบ็ดเดียวกัน ดังนั้น อันไหนจะถูกประหารชีวิตก่อน? นี่คือที่เราสามารถใช้ พารามิเตอร์ทางเลือก $ priority ของฟังก์ชั่น add_action ().
เราเพิ่มความสำคัญเป็นจำนวนเต็มบวก, ค่าเริ่มต้นคือ 10. หากเราต้องการให้การดำเนินการเร็วขึ้นเราจะให้ค่าที่ต่ำกว่าหากเราต้องการให้ดำเนินการในภายหลังเราจะให้มูลค่าที่สูงกว่า.
ดังนั้นหากเราคิดว่า favicon จะต้องมีก่อนเราสามารถเพิ่มการเรียก add_action () ก่อนหน้าของเราด้วยวิธีต่อไปนี้:
add_action ('wp_head', 'custom_add_favicon', 5);
โปรดทราบว่าจะต้องมีการจัดลำดับความสำคัญ ตั้งค่าเป็นฟังก์ชั่นที่กำหนดเองอื่น ๆ ที่ใช้เบ็ดการกระทำเดียวกัน.
เพิ่มจำนวนอาร์กิวเมนต์ที่ยอมรับ
คุณจะต้องเพิ่มจำนวนอาร์กิวเมนต์ที่ยอมรับในกรณีที่คุณใช้ action hook ที่รับพารามิเตอร์ เรามาดูตัวอย่างที่เราเคยใช้กันมาก่อน.
action hook 'wp_register_sidebar_widget' รับหนึ่งพารามิเตอร์ดังนั้นเมื่อเราผูกฟังก์ชันที่กำหนดเองของเรากับ hook นี้เรายังต้องรวมสิ่งนี้เป็นอาร์กิวเมนต์เมื่อเราเรียกใช้ฟังก์ชัน add_action ().
รหัสของเราในกรณีนี้จะเป็นดังนี้:
ฟังก์ชั่น my_sidebar_widget_function ($ widget) // รหัสของคุณ add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1);
ทราบว่าเราต้อง ยังเพิ่มความสำคัญ (เราเลือกค่าเริ่มต้น 10 ที่นี่) เพื่อให้แน่ใจว่า WordPress รู้ว่าแต่ละพารามิเตอร์หมายถึงอะไร. หากเราไม่ใส่ลำดับความสำคัญ WordPress อาจถือว่า 1 เป็นลำดับความสำคัญ ซึ่งไม่เป็นความจริงตามที่ระบุจำนวนอาร์กิวเมนต์ที่ยอมรับ.
ข้อสรุป
คุณสามารถทำการทดลองมากมายกับ hooks การกระทำในการปรับแต่งชุดรูปแบบ ตัวอย่างเช่นคุณสามารถเพิ่มสคริปต์ที่กำหนดเอง (JS) และสไตล์ (CSS) ของคุณด้วยตะขอการกระทำ wp_enqueue_scripts หรือรหัส Google Analytics ของคุณด้วยตะขอการกระทำ wp_footer.
คุณไม่เพียง แต่สามารถ เพิ่มการกระทำของคุณเอง, แต่คุณยังสามารถ ลบฟังก์ชันการทำงานที่สมบูรณ์ จากแกน WordPress ด้วยการใช้ฟังก์ชั่น remove_action () ที่ใช้ตรรกะเดียวกับ add_action ().
หากคุณเป็นผู้แต่งชุดรูปแบบและคุณต้องการสร้างชุดรูปแบบที่สามารถขยายได้ก็เป็นความคิดที่ดี เพิ่ม hooks การกระทำที่กำหนดเองของคุณเองไปยังไฟล์แม่แบบที่เหมาะสม ด้วยฟังก์ชัน do_action ().
หากคุณต้องการทำเช่นนั้น, คิดอย่างรอบคอบเกี่ยวกับพารามิเตอร์ที่นักพัฒนาอื่น ๆ ใครจะใช้ชุดรูปแบบของคุณ จะต้องผ่านการโต้แย้ง เมื่อพวกเขาต้องการที่จะขอในฟังก์ชั่นที่กำหนดเองของพวกเขา.
ในขณะที่การออกแบบตำแหน่งของตะขอการกระทำที่กำหนดเองของธีมของคุณอย่าลืมมัน ไม่สมเหตุสมผลที่จะรวม hooks ธีมที่กำหนดเองไว้ในจุดเดียวกับที่ WordPress Core เองมี hooks ของตัวเอง.