โฮมเพจ » WordPress » วิธีใช้ WordPress Action hooks ในการปรับแต่งธีม

    วิธีใช้ 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 ของตัวเอง.