ในการที่จะสร้าง Theme WordPress นั้น สามารถทำได้หลายวิธี
ประเด็นคือ ถ้าคุณมี Theme ที่ชอบอยู่แล้ว Theme นั้นมีรูปแบบหรือ Function ต่างๆ มีคุณสมบัติครบสำหรับคุณแล้ว แต่คุณอยากจะปรับแต่งแค่บางส่วนเท่านั้น คุณจะทำยังไง?
วิธีที่ง่ายๆเลยก็คือ การ Modify แก้ไขพวกไฟล์ต่างๆ เช่น style.css , function.php , header.php ของ Theme โดยตรง
แต่ปัญหาคือ ถ้า Theme นั้นมีการ Update หล่ะ คุณจะทำยังไงในเมื่อคุณแก้ไขไฟล์ต่างๆไปแล้วตั้งมากมาย ก็พอมีทางออกนะครับเพียงแค่เราก็อบปี้ไฟล์ที่เราแก้ไขไว้ก่อนอัพเดต จากนั้นก็ค่อยมาไล่แก้ไขโค๊ดอีกทีหลังอัพเดตแล้ว โอว์…แบบนี้ก็ “งานงอก” สิครับ ฟังดูแล้วมันน่าเศร้าเสียจริง เลือดเนื้อโปรแกรมเมอร์โดยแท้ ): ต้องเสียเวลามาแก้งานเดิมที่เคยทำไปแล้ว
Child Theme เกิดมาเพื่อแก้ปัญหาเหล่านี้คุณสามารถสร้าง Child Theme เพื่อทำการ Overriding parent theme เพื่อใช้งานและปรับแต่งเพิ่มเติมได้ และเมื่อมีการ Update Theme ก็ทำที่ Parent theme เท่านั้น
จึงไม่เกิดความเสียหายต่อ Theme ที่เราสร้างใหม่และไม่ต้องแก้โค๊ดเก่าที่เคยทำไว้
Concept ของ Child Theme คือ ไม่ต้องทำในส่วนที่มีอยู่แล้ว เปลี่ยนแปลงเฉพาะส่วนที่ต้องการเท่านั้น
Parent Theme = พ่อแม่
Child Theme = ลูก
พ่อแม่ หน้าตาเป็นยังไง ลูก ก็มีหน้าตาแบบนั้น แต่เราสามารถปรับแต่งหน้าตาลูกได้ โดยที่บางส่วนยังมีเหมือนพ่อแม่
ถ้าใครเขียนโปรแกรมแบบ OOP อยู่แล้วหลักการก็จะคล้ายๆ
Inheritance (การสืบทอด)
มาลองทำกันเลย คุณสามารถสร้าง Child Theme ได้ 2 วิธี
- วิธีที่ 1. ใช้ Plugin One-Click Child Theme ดาวน์โหลดที่นี่
- วิธีที่ 2. ทำด้วยมือ สร้างขึ้นมาเอง
ที่จริงแล้วก็ง่ายๆทั้งสองวิธีผมจะยกตัวอย่างวิธีที่ 2 นะครับ ในตัวอย่างนี้ผมมี Theme ที่ชอบอยู่แล้วชื่อ salient
ใน wp-content/themes สร้างโฟล์เดอร์ขึ้นมา ตั้งชื่อว่า salient-child และภายในโฟล์เดอร์สร้างไฟล์ style.css และ function.php
เขียนโค๊ดในไฟล์ style.css
/*Theme Name: My Theme Template: salient*/
Theme Name = ชื่อที่แสดงในหน้า Admin
Template = ชื่อ Parent Theme
หลังจากนั้นเขียนโค๊ดในไฟล์ function.php
<?phpadd_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); }?>
หลังจากนั้นให้คุณเข้าไปที่หน้า Admin แล้วเปลี่ยน Theme เป็น My Theme
ก็จะพบว่า หน้าตาเว็บไซต์จะเหมือนกันกับ Parent Theme ทุกประการ แต่คุณสามารถที่จะเขียนโค๊ดปรับแต่งได้เลยโดยไม่ต้องยุ่งเกี่ยวกับ Theme แม่
ก็ลองทดสอบปรับแต่ง CSS หรือ เขียนฟังก์ชั่นเพิ่มเติมใน function.php ดูครับ
สรุป! ทำไมต้องใช้ Child Theme - If you modify a theme directly and it is updated, then your modifications may be lost. By using a child theme you will ensure that your modifications are preserved.
ถ้าเราแก้ไขไฟล์ต่างๆใน Theme โดยตรง เมื่อมีการอัพเดต สิ่งที่เราทำไว้อาจเสียหายได้ ต้องทำใหม่(เสียเวลา) แต่ถ้าเราใช้ Child Theme สิ่งที่เราเคยแก้ไขจะยังอยู่เหมือนเดิม - Using a child theme can speed up development time.
ช่วยให้เราใช้เวลาในการพัฒนา Theme ได้เร็วขึ้น - Using a child theme is a great way to learn about WordPress theme development.
เป็นแนวทางที่ดีเยี่ยมในการศึกษาและพัฒนา WordPress theme ที่ถูกวิธี
ที่มา:
http://www.panu.me/child-theme-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/