วิธีการแทนที่ฟังก์ชันธีมหลักในธีมย่อย

เผยแพร่แล้ว: 2022-11-01

หากคุณกำลังสร้างธีมลูกใน WordPress เป็นไปได้ว่าคุณจะต้องการแทนที่ฟังก์ชันบางอย่างในธีมหลัก ในบทความนี้ เราจะแสดงวิธีแทนที่ฟังก์ชันของธีมหลักในธีมย่อยของคุณ ขั้นแรก คุณต้องเข้าใจว่า WordPress โหลดทำงานอย่างไร เมื่อเรียกใช้ฟังก์ชัน WordPress จะค้นหาในธีมย่อยก่อน หากไม่พบ แสดงว่าอยู่ในธีมหลัก ดังนั้น ถ้าคุณต้องการแทนที่ฟังก์ชัน คุณเพียงแค่ต้องสร้างในธีมย่อยของคุณ สมมติว่าคุณต้องการแทนที่ฟังก์ชัน get_header() ของธีมหลัก คุณเพียงแค่สร้างฟังก์ชัน get_header() ในไฟล์ functions.php ของธีมลูกของคุณ ฟังก์ชันใหม่จะมีลักษณะดังนี้: function get_header() { // your code here } เมื่อ WordPress เรียกใช้ฟังก์ชัน get_header() ก็จะใช้ฟังก์ชันใหม่ของคุณแทนฟังก์ชันของธีมหลัก แน่นอน คุณยังสามารถแทนที่ฟังก์ชันต่างๆ ได้ด้วยการคัดลอกจากธีมหลักไปยังธีมย่อย อย่างไรก็ตาม เราไม่แนะนำวิธีนี้ เนื่องจากง่ายต่อการลืมอัปเดตฟังก์ชันในธีมย่อยเมื่ออัปเดตธีมหลัก ควรใช้วิธีการแทนที่ เพื่อให้คุณมั่นใจได้ว่าธีมลูกของคุณใช้เวอร์ชันล่าสุดของฟังก์ชันของธีมหลักเสมอ

บทความนี้จะอธิบายวิธีการแทนที่ฟังก์ชันธีมสำหรับผู้ปกครองของ WordPress คุณสามารถเปลี่ยนลำดับการทำงานของฟังก์ชันได้โดยใช้หนึ่งในสามวิธี หรือคุณสามารถป้องกันไม่ให้เกิดขึ้นเลยก็ได้ เมื่อสร้างธีมพาเรนต์ ควรรวมปลั๊กอินสำหรับฟังก์ชันของคุณ เพื่อให้สามารถปรับเปลี่ยนได้ง่ายใน ธีม ย่อย หากต้องการลบฟังก์ชันออกจากธีมพาเรนต์ ให้ใช้เมธอด remove_action() และ remove_filter() ขึ้นอยู่กับเบ็ดที่คุณใช้ ระดับความสำคัญของฟังก์ชันจะถูกกำหนด หากฟังก์ชันมีลำดับความสำคัญเป็น 20 การเขียนธีมลูกใหม่ที่มีลำดับความสำคัญ 25 จะทำให้ฟังก์ชันทำงานแตกต่างจากเมื่อสร้างฟังก์ชันขึ้นครั้งแรก ในทางกลับกัน ลำดับความสำคัญไม่มีผลต่อการเขียนฟังก์ชันใหม่ของคุณ เพียงแค่เลือกสิ่งที่คุณต้องการทำ

ธีมเด็ก WordPress ของธีมเด็ก

ภาพโดย: https://gvtechnolab.in/how-to-create-child-theme-wordpress/

ธีมลูกของ WordPress เป็นธีมที่สืบทอดฟังก์ชันการทำงานจากธีมอื่นที่เรียกว่าธีมหลัก ธีมย่อยมักใช้เมื่อคุณต้องการเปลี่ยนแปลงธีมที่มีอยู่ โดยไม่สูญเสียความสามารถในการอัปเดตธีมหลัก เมื่อมีการใช้งานธีมลูก อันดับแรก WordPress จะค้นหาไฟล์เทมเพลตในไดเร็กทอรีของธีมย่อย หากไม่พบไฟล์เทมเพลตในไดเร็กทอรีของธีมย่อย WordPress จะค้นหาไฟล์เทมเพลตเดียวกันในไดเร็กทอรีของธีมหลัก วิธีนี้ทำให้คุณสามารถแทนที่ไฟล์เทมเพลตในธีมพาเรนต์ โดยไม่ต้องแก้ไขไฟล์ของธีมพาเรนต์โดยตรง

WordPress ทำให้การสร้างเว็บไซต์ที่มีความรู้เพียงเล็กน้อยเกี่ยวกับ HTML, CSS และ/หรือ PHP เป็นเรื่องง่าย ข้อเสียของวิธีนี้คือเมื่อผู้พัฒนาอัปเดตธีมแล้ว การแก้ไขที่ทำไว้จะหายไป การใช้ธีมลูกเป็นแนวคิดที่ดีกว่ามากเพราะช่วยให้คุณสามารถเปลี่ยนแปลงเว็บไซต์ได้โดยไม่ต้องเปลี่ยนอะไรจากธีม ไฟล์ธีม ถูกแก้ไขหรือเปลี่ยนแปลงขึ้นอยู่กับว่าธีมลูกเป็นธีมดั้งเดิมหรือธีมที่แก้ไข เนื่องจากจะเปลี่ยนเฉพาะบางส่วนของธีมหลักที่คุณระบุ จึงไม่คัดลอกทุกอย่าง เพื่อให้ธีมลูกทำงานได้อย่างถูกต้อง มีสามสิ่งที่ต้องมี: โฟลเดอร์ สไตล์ชีต และไฟล์ functions.php ธีมลูกควรมีโฟลเดอร์ สไตล์ชีต และไฟล์ functions.php ของตัวเอง

ธีมย่อยจะอยู่ในพื้นที่เนื้อหา/ธีมของ WP ของการติดตั้ง WordPress เช่นเดียวกับธีมอื่นๆ คุณต้องการเพียงชื่อและเทมเพลตของธีมเท่านั้น สิ่งสำคัญคือต้องเก็บส่วนที่เหลืออย่างเคร่งครัดเพื่อวัตถุประสงค์ในการเผยแพร่เพราะฉันไม่ทำ หากคุณใช้ functions.php คุณสามารถเปลี่ยนและเพิ่มฟังก์ชันและคุณสมบัติต่างๆ ให้กับเว็บไซต์ WordPress ได้ การสร้างไฟล์นั้นง่ายพอๆ กับการสร้างสไตล์ชีต หากคุณไม่ต้องการใช้ PHP เพื่อแก้ไขธีม คุณก็สามารถทำได้โดยไม่ต้องใช้มัน หากคุณมีธีมหลัก คุณควรตระหนักดีว่าเว็บไซต์ของคุณควรมีลักษณะอย่างไร

ถ้าคุณต้องการสร้างที่นี่ ก่อนอื่นคุณต้องรับข้อมูลเกี่ยวกับสไตล์ชีตของธีมหลักของคุณ CSS และกฎ @import เป็นสองวิธีในการทำเช่นนี้ หากทุกอย่างเป็นไปด้วยดี ธีมสำหรับบุตรหลานของคุณควรมีลักษณะเหมือนกับธีมที่คุณสร้างขึ้นสำหรับเขาหรือเธอ ตอนนี้เราสามารถเริ่มปรับแต่งธีมของเราและเปลี่ยนแปลงสิ่งต่าง ๆ เพื่อให้ได้ผลลัพธ์ที่ต้องการ มีตัวเลือกมากมายสำหรับการปรับแต่ง และเราจะอธิบายแต่ละอย่างอย่างละเอียดถี่ถ้วน คุณสามารถเพิ่มสไตล์แบบกำหนดเองลงในธีมย่อยที่จะมีลำดับชั้นของสไตล์เดียวกันกับธีมหลักได้ วิธีที่คุณใช้สามารถใช้เพื่อทำการเปลี่ยนแปลงจำนวนเท่าใดก็ได้ในเว็บไซต์ของคุณ

เป็นความคิดที่ดีเสมอที่จะรักษาโครงสร้างโฟลเดอร์ของธีมลูกให้อยู่ในลำดับเดียวกันกับของธีมหลัก ถ้าไฟล์ชื่อเพจเทมเพลตในธีมพาเรนต์มีโฟลเดอร์ชื่อเพจเทมเพลต คุณสามารถสร้างโฟลเดอร์ที่มีชื่อเดียวกันในไดเร็กทอรีของธีมย่อยของคุณ เราเพียงแค่เปลี่ยนชื่อ page.php จากธีมหลักเป็น custom-full-width.php เพื่อสร้างเทมเพลตเพจแบบกำหนดเองของเรา ตัวอย่างแรกคือ ฟังก์ชัน footer-custom.php ที่เพิ่มคลาสแบบเต็มความกว้างให้กับองค์ประกอบส่วนท้ายดังที่แสดงด้านล่าง ตอนนี้เราเพียงแค่ต้องป้อนรหัสในสไตล์ชีตด้านล่าง นี่คือหน้าเต็มความกว้างของเรา แม้ว่าอาจจะมีการขัดเกลาบ้าง แต่เราควรจะพอใจกับผลลัพธ์ในตอนนี้

Theme hook ให้คุณปรับแต่งธีมลูกโดยไม่ต้องแก้ไขไฟล์หลัก คุณสามารถเพิ่มเนื้อหาลงในธีมได้ทันที เช่น ฟังก์ชั่น โดยใช้เบ็ดธีม ตะขอมีสองแบบ: ตะขอแอ็คชั่นและตะขอกรอง ฟังก์ชันที่กำหนดเองสามารถเพิ่มลงในฟังก์ชันที่มีอยู่ด้วย action hooks ในขณะที่ฟังก์ชันตัวกรองสามารถปรับเปลี่ยนฟังก์ชันที่มีอยู่ได้ การสร้างธีมลูกใน WordPress นั้นง่ายมาก ต้องใช้โค้ดเพียงบรรทัดเดียวในการทำเช่นนั้น ในกรณีนี้ ฟังก์ชันสำหรับให้เครดิตส่วนท้ายในธีม Twenty Fifteen จะถูกกำหนดเป้าหมาย หากคุณใช้ ตัวเลือก functions.php โปรดตรวจสอบให้แน่ใจว่าไฟล์ footer.php ที่แก้ไขในธีมย่อยของคุณถูกลบไปด้วย

ตะขอในธีมลูกสามารถขยายขอบเขตงานศิลปะของลูกคุณได้ ด้วยธีมลูก เราสามารถปรับแต่งเว็บไซต์ได้อย่างสมบูรณ์โดยไม่ต้องแก้ไขไฟล์หลัก ดังนั้น หากคุณต้องการเพิ่มธีมหรือเฟรมเวิร์ก คุณสามารถทำได้โดยไม่ต้องเขียนตั้งแต่เริ่มต้น การเปลี่ยนแปลงของคุณได้รับการปกป้องจากการอัพเดทธีม และหากมีข้อผิดพลาด คุณจะมี ธีมที่ใช้งาน ได้เสมอ

3 เหตุผลในการใช้ธีมเด็ก

มีเหตุผลหลายประการที่คุณอาจต้องการใช้ธีมลูก คุณสามารถเพิ่มการปรับแต่งเพิ่มเติมให้กับธีมที่มีอยู่ได้ หากคุณต้องการปรับแต่งรูปลักษณ์ของไซต์ คุณสามารถทำได้ด้วยธีมที่มีฟีเจอร์ปรับแต่งอยู่แล้ว หากคุณไม่มีเวลาหรือความรู้ในการแก้ไขโค้ดต้นฉบับ คุณสามารถใช้ธีมได้ โดยส่วนใหญ่ การใช้ธีมลูกเป็นวิธีที่สะดวกที่สุดในการได้ผลลัพธ์ที่ต้องการ เมื่อคุณใช้ ธีมหลักที่ดี คุณจะสังเกตเห็นและเข้าใจการเปลี่ยนแปลงที่คุณทำ ข้อดีอย่างหนึ่งของการใช้ธีมลูกคือคุณสามารถสร้างธีมเฉพาะสำหรับบุตรหลานของคุณได้ แต่มีข้อเสียอยู่บ้าง ธีมย่อยอาจขัดแย้งกับปลั๊กอิน ธีม หรือความสามารถในการปรับแต่งอื่นๆ ที่คุณสร้างขึ้น ปัญหาที่สองของ WordPress คือ ธีมลูกไม่สามารถใช้งานได้กับแพลตฟอร์มเวอร์ชันเก่า ธีมย่อยทั้งหมดไม่สามารถใช้งานร่วมกับปลั๊กอิน WordPress ทั้งหมดได้เสมอไป ประโยชน์ของการใช้ธีมลูกมีมากกว่าข้อเสียของการใช้ธีมหลัก คุณยังอาจต้องการใช้การสาธิตหรือลองใช้ธีมย่อยก่อนเผยแพร่

วิธีเพิ่มฟังก์ชัน Php ในธีมลูก

ภาพโดย: https://www.wpbeaverbuilder.com/redirect-wordpress-page/

ในกรณีของเรา php จะต้องสร้างไฟล์ชื่อ “ฟังก์ชั่น” เท่านั้น เพื่อให้เราสามารถบันทึกไว้ในโฟลเดอร์ธีมลูกของเรา หากต้องการบันทึกแท็ก php ที่อยู่ในโปรแกรมแก้ไขข้อความของคุณ ให้ป้อนแท็กเปิดและปิด PHP แล้วบันทึกเป็นฟังก์ชัน คุณยังมีตัวเลือก ไฟล์ฟังก์ชันแรก จะถูกอัปโหลดไปยังโฟลเดอร์ธีมลูกของคุณเมื่ออัปโหลดแล้ว

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีเพิ่มฟังก์ชันให้กับธีมลูกของ WordPress ในธีม Twenty Twelve เราจะให้ข้อมูลเมตาของโพสต์มีรูปลักษณ์ที่แตกต่างออกไป คุณจะได้เรียนรู้วิธีเพิ่มฟังก์ชันให้กับธีมย่อยในบทช่วยสอนนี้ ซึ่งเป็นส่วนหนึ่งของซีรีส์ เมื่อเราดูไฟล์ functions.php ที่รวมอยู่ใน Twenty Twelve เราจะเห็นว่าส่วนหัวมีบรรทัดที่น่าสนใจมาก ฟังก์ชันที่เสียบได้จะถูกรวมไว้ในการโทรเช่นนี้ ฟังก์ชัน Twentytwelve_nice_function (สมมติว่ามีอยู่แล้ว) จะโหลดได้ก็ต่อเมื่อไม่มีอยู่ในธีมหลักเท่านั้น ในการสร้างไฟล์เปล่า ให้ป้อน functions.php ลงในโฟลเดอร์ธีมลูกของเรา

ในบทช่วยสอนนี้ เราจะแก้ไขเอาต์พุตเริ่มต้นของธีม Twenty Twelve แผนกใหม่จะถูกสร้างขึ้นเพื่อจัดการกับฟังก์ชันที่สร้างสตริงที่จัดรูปแบบสำหรับบรรทัดข้อมูลเมตาของโพสต์ เราต้องมีกฎ CSS ของ child-custom-meta div เมื่อเราสร้าง ไฟล์ functions.php ใหม่ และไฟล์ style.html ใหม่จะต้องอัปโหลดไปยังโฟลเดอร์ธีมย่อย

วิธีเข้าถึงไฟล์ในธีมลูกของคุณ

โครงสร้างโฟลเดอร์ของธีมลูกช่วยให้คุณแก้ไขไฟล์เฉพาะในธีมได้ ในการเริ่มต้น ต้องพบโฟลเดอร์ของธีมย่อยในไซต์ของคุณ จากนั้นใช้เส้นทางต่อไปนี้: br>a href=www.yourdomain.com/br>www.yourdomain.com/yourparenttheme folder/br>www.yourdomain.com/yourchildtheme folder/br>/a> หากธีมลูกของคุณ อยู่ที่ sites/blog/themes/childtheme ตัวอย่างเช่น ธีมหลักของคุณจะอยู่ที่ sites/blog/themes/childtheme ตรวจสอบให้แน่ใจว่ามีการเปลี่ยนแปลงส่วนหัว คุณจะสามารถอ่านไฟล์ได้โดยไปที่ site/blog/themes/child-theme/header เป็นต้น หากคุณต้องการแก้ไข ธีมพาเรนต์ทั้งหมด แทนที่จะเป็นไฟล์เฉพาะในธีมย่อย คุณสามารถเข้าถึงไฟล์ของธีมพาเรนต์ได้โดยใช้โครงสร้างโฟลเดอร์ของธีมพาเรนต์ ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีโฟลเดอร์ของธีมหลักในไซต์ของคุณ ต่อไปนี้เป็นขั้นตอนต่อไป www.sitename.com/ หากธีมหลักของคุณอยู่ที่ sites/blog/themes/default ตัวอย่างเช่น ไฟล์ของธีมหลักของคุณจะอยู่ที่นั่น