การสร้าง child themes ใน WordPress

ในการใช้งาน WordPress ปัญหาที่เราต้องเจอบ่อยๆคือ เมื่อเราต้องทำการแก้ไขไฟล์  style.css, functions.php หรือ ไฟล์อื่นๆ ใน folder ของ theme ที่เราเลือกมาใช้ แต่ถ้าเราทำการ update theme จะทำให้ไฟล์ ที่เราทำการแก้ไขนั้นถูก save ทับไปกลายเป็นของใหม่ ซึ่งจะทำให้ ต้องทำการ copy file เก่าขึ้นไปใหม่ ซึ่งจะทำให้เป็นปัญหาในการทำงานเป็นอย่างมาก แต่ถ้าเราใช้ child themes จะทำให้ปัญหาเหล่านี้หมดไป(เป็นวิธีการที่ wordpress แนะนำให้ทำ เมื่อเราต้องการ customize theme)

ต่อไปเราก็มารู้จักกับ Child Themes กัน จากชื่อก็คงพอจะเดาได้อยู่แล้วว่าคือการ Inherit มาจาก Parent Theme(theme ต้นฉบับ) พูดเป็นภาษาชาวบ้านก็คือการที่เรา copy เอา theme ของเค้ามาสร้างเป็น theme ของเราเอง โดยที่เราไม่ต้องทำการ copy file ของเค้ามาใช้งาน แค่บอกว่าส่วนที่เราอยากจะเพิ่มคือส่วนไหนเท่านี้ก็พอ

ขั้นตอนในการสร้าง child themes คือ

  1. ทำการสร้าง folder theme ใหม่ของเราไว้ที่ folder-ที่เราติดตั้ง-wordpress/wp-content/themes ตั้งชื่ออะไรก็ได้ แต่ในควรจะตั้งชื่อตาม parent theme เพื่อป้องกันความสับสนและง่ายในการแก้ไข เข่นจะสร้าง child ของ theme twentyfifteen ก็ตั้งชื่อเป็น twentyfifteen-child ตามรูป child-theme-items
  2. เมื่อได้ folder ที่เราต้องการแล้วเราก็จะสร้าง file style.css ของเราไฟล์นี้ wordpress จะเอาไปต่อจากของเก่า เพราะฉะนั้นเราสามารถเขียน css ทับของเก่าได้เลย แต่ต้องระบุรายละเอียดของ theme ไว้ใน file ตามนี้

    ส่วนที่ต้องระวังคือ Template จะเป็นชื่อของ parent theme แต่จะเป็นตัวเล็กเท่านั้น(ไปเปิดดูในไฟล์ style.css ของ parent theme จะมีชื่อ Theme Name อยู่ ให้ใช้ชื่อนั้นแต่เปลี่ยนเป็นตัวเล็กทั้งหมด)
  3. เข้าไปในหน้า admin ของ wordpress แล้วก็ทำการเลือกใช้ theme ของเราแทนของเก่า โดยเข้าไปที่ menu Appearane -> Themes เลือก activate theme ที่เราสร้างขึ้น

เป็นอันเรียบร้อยเราจะได้ child theme ขึ้นมาใช้งานโดยที่ไม่ขึ้นอยู่กับ theme ที่เราเอามาเป็นต้นแบบ

ถ้าเราหา theme ใหม่ของเราไม่เจอแสดงว่ามีปัญหาเกิดขึ้นให้ดูด้านล่างจะมีส่วนของ Broken themes จะมีรายละเอียดว่า Error ที่จุดไหน เช่น ถ้าเราเขียนชื่อ parent theme ผิด(อาจใช้ ตัวพิมพิ์ใหญ่) ทำให้หา parent theme ไม่เจอ เป็นต้น

รายละเอียดเพิ่มเติมเข้าไปดูได้ที่

https://codex.wordpress.org/Child_Themes