WordPress
การปรับแต่งหน้าตาเว็บ WordPress ให้ตรงกับความต้องการโดยไม่ต้องแก้ Theme โดยตรง ทำได้ผ่านการเพิ่ม Custom CSS ซึ่งเป็นวิธีที่ปลอดภัยและมีความยืดหยุ่นสูง บทความนี้จะอธิบายทุกวิธีที่ถูกต้อง ตั้งแต่การใช้ Customizer ในตัว WordPress ไปจนถึงการสร้าง Child Theme และใช้ Plugin เพื่อให้ CSS ของคุณไม่หายไปหลัง Update Theme
Custom CSS ผ่าน Appearance → Customizer
WordPress มีพื้นที่สำหรับใส่ Custom CSS ในตัวอยู่แล้วผ่านเมนู Appearance → Customize → Additional CSS ซึ่งเป็นวิธีที่ง่ายและเหมาะสำหรับมือใหม่ที่สุด ข้อดีคือสามารถดูตัวอย่างผลลัพธ์แบบ Real-time ได้ทางซ้ายมือก่อน Publish จริง และ CSS ที่ใส่ในส่วนนี้จะถูกเก็บไว้ใน Database ไม่ได้อยู่ในไฟล์ Theme ดังนั้น จะไม่หายหลัง Update Theme (Parent Theme)
วิธีเข้าถึง Additional CSS ใน Customizer มีดังนี้:
- ล็อกอิน WordPress Admin แล้วไปที่ Appearance → Customize
- คลิกที่เมนู "Additional CSS" ซึ่งอยู่ด้านล่างของ Customizer Panel
- พิมพ์โค้ด CSS ในช่องว่าง เว็บด้านซ้ายจะแสดงผลแบบ Real-time ทันที
- กดปุ่ม "Publish" เพื่อบันทึกและใช้งานจริง
ข้อจำกัดของ Customizer CSS คือจุกจิกเรื่อง Syntax เล็กน้อย — ถ้ามีโค้ดผิดพลาดจะไม่ Publish และมีขนาดสูงสุดที่แนะนำประมาณ 2,000 บรรทัด หากต้องการ CSS จำนวนมากกว่านี้ควรใช้ Child Theme หรือ Plugin แทน
ใส่ CSS ผ่าน Child Theme
Child Theme คือวิธีที่เป็นมาตรฐานมากที่สุดในการปรับแต่ง WordPress Theme โดยไม่ให้ผลกระทบหายไปหลัง Update Parent Theme ใน Child Theme จะมีไฟล์ style.css ที่เราสามารถใส่ Custom CSS ได้โดยตรง และจะไม่ถูกเขียนทับเมื่อ Parent Theme มีการ Update
ขั้นตอนการสร้าง Child Theme เบื้องต้น (ถ้ายังไม่มี):
- สร้างโฟลเดอร์ใหม่ใน
/wp-content/themes/เช่นmytheme-child - สร้างไฟล์
style.cssพร้อม Header ที่ระบุ Parent Theme - สร้างไฟล์
functions.phpเพื่อโหลด CSS ของ Parent Theme - เปิดใช้ Child Theme ผ่าน Appearance → Themes
ตัวอย่างโค้ดใน style.css ของ Child Theme:
/*
Theme Name: My Custom Child Theme
Template: twentytwentyfour
Version: 1.0
*/
/* Custom CSS ของคุณเพิ่มที่นี่ */
body {
font-size: 17px;
}
.entry-title {
color: #15803d;
}
ข้อดีของ Child Theme คือ CSS ทั้งหมดอยู่ในไฟล์จริง ง่ายต่อการ Backup และ Version Control นอกจากนี้ยังสามารถ Override ไฟล์ Template ของ Parent Theme ได้ด้วย ไม่ใช่แค่ CSS อย่างเดียว ทำให้เป็นตัวเลือกที่ยืดหยุ่นที่สุดสำหรับการปรับแต่ง WordPress
ใช้ Plugin: Simple Custom CSS and JS
หากไม่ต้องการสร้าง Child Theme เอง ทางเลือกที่ดีคือใช้ Plugin จัดการ CSS โดยเฉพาะ "Simple Custom CSS and JS" เป็น Plugin ฟรีที่ได้รับความนิยมสูง มีผู้ใช้งานมากกว่า 500,000 เว็บ และอัพเดทอยู่สม่ำเสมอ Plugin นี้ให้คุณเพิ่มทั้ง CSS และ JavaScript ผ่าน Editor ที่มี Syntax Highlighting ทำให้เขียนโค้ดได้สะดวกขึ้นมาก
วิธีติดตั้งและใช้งาน:
- ไปที่ Plugins → Add New ค้นหา "Simple Custom CSS and JS" แล้วกด Install และ Activate
- เมนูใหม่ "Custom CSS & JS" จะปรากฏในแถบด้านซ้าย
- คลิก "Add Custom CSS" เพื่อสร้าง CSS ใหม่
- ตั้งชื่อ (เช่น "My Site Styles") แล้วเขียน CSS ในช่อง Editor
- เลือกว่าจะโหลดใน Header หรือ Footer และ Internal หรือ External File
- กด "Publish" เพื่อใช้งาน
ข้อดีของ Plugin นี้คือสามารถสร้าง CSS ได้หลายชุด และเปิด/ปิดแต่ละชุดได้อิสระโดยไม่ต้องลบโค้ดทิ้ง เหมาะมากสำหรับทดสอบ Style ใหม่ๆ โดยไม่กระทบ CSS ที่ใช้งานอยู่ รองรับทั้งแบบ Internal (ฝังใน HTML) และ External File (สร้างไฟล์ .css แยก) ซึ่งแบบหลังดีกว่าในแง่ประสิทธิภาพและการ Cache
| วิธีเพิ่ม CSS | รอดหลัง Update Theme | ง่ายสำหรับมือใหม่ | จัดการได้หลายชุด | Syntax Highlighting |
|---|---|---|---|---|
| Customizer Additional CSS | ✓ ใช่ | ✓ ง่ายมาก | ✗ ไม่ได้ | ✗ ไม่มี |
| Child Theme style.css | ✓ ใช่ | △ ปานกลาง | ✓ ได้ | △ ขึ้นกับ Editor |
| Plugin Simple CSS & JS | ✓ ใช่ | ✓ ง่าย | ✓ ได้หลายชุด | ✓ มี |
| แก้ Theme style.css โดยตรง | ✗ หายหลัง Update | △ ปานกลาง | ✗ ไม่ได้ | △ ขึ้นกับ Editor |
ตัวอย่าง CSS ที่ใช้บ่อยบน WordPress
มีโค้ด CSS บางส่วนที่นักพัฒนาเว็บ WordPress ใช้บ่อยมากในการปรับแต่งเว็บให้ดูดีขึ้น ไม่ว่าจะเป็นการปรับฟอนต์ สี การจัดเลย์เอาต์ หรือการซ่อนองค์ประกอบบางส่วน รวบรวมตัวอย่างที่เป็นประโยชน์ไว้ดังนี้:
ปรับ Font ทั่วทั้งเว็บ
body {
font-family: 'Sarabun', 'Noto Sans Thai', sans-serif;
font-size: 17px;
line-height: 1.8;
}
h1, h2, h3 {
font-weight: 700;
}
เปลี่ยนสีลิ้งค์และ Hover
a {
color: #15803d;
text-decoration: none;
}
a:hover {
color: #059669;
text-decoration: underline;
}
ปรับความกว้าง Content Area
.entry-content {
max-width: 780px;
margin: 0 auto;
}
ซ่อนองค์ประกอบที่ไม่ต้องการ
/* ซ่อน WordPress Admin Bar ใน Frontend */
#wpadminbar {
display: none !important;
}
/* ซ่อน Sidebar บนหน้า Mobile */
@media (max-width: 768px) {
.widget-area {
display: none;
}
}
เพิ่ม Style ให้ปุ่ม
.wp-block-button__link {
background-color: #15803d;
border-radius: 6px;
padding: 12px 24px;
font-weight: 600;
}
.wp-block-button__link:hover {
background-color: #059669;
}
- ปรับ Header: ใช้
.site-headerหรือ#mastheadขึ้นกับ Theme - ปรับ Footer: ใช้
.site-footerหรือ#colophon - ปรับ Post Meta: ใช้
.entry-metaสำหรับข้อมูลวันที่/ผู้เขียน - ปรับ Featured Image: ใช้
.post-thumbnail img - ปรับ Comment Section: ใช้
#comments
สำคัญคือ Selector ที่ใช้จะแตกต่างกันในแต่ละ Theme ควรใช้ Browser DevTools (F12) ตรวจดู Class และ ID ของ Element ที่ต้องการปรับแต่งก่อนเขียน CSS เสมอ
ลำดับความสำคัญของ CSS (Specificity)
CSS Specificity (ความจำเพาะเจาะจง) คือกฎที่กำหนดว่าโค้ด CSS ชุดไหนจะมีผลเหนือกว่าเมื่อมีหลายกฎที่ Target Element เดียวกัน เป็นเรื่องสำคัญมากที่มือใหม่ต้องเข้าใจ เพราะเป็นสาเหตุที่ทำให้ "CSS ใส่แล้วแต่ไม่มีผล" บ่อยที่สุด
ลำดับ Specificity จากต่ำสุดไปสูงสุด:
- Element Selector เช่น
p,h1,div— Specificity = 0,0,1 - Class Selector เช่น
.my-class,.entry-content— Specificity = 0,1,0 - ID Selector เช่น
#main,#wpadminbar— Specificity = 1,0,0 - Inline Style เช่น
style="color:red"— Specificity = สูงกว่า ID - !important — สูงสุด แต่ควรใช้เป็นทางสุดท้ายเท่านั้น
ตัวอย่าง: ถ้า Theme มี CSS เขียนว่า .entry-content p { color: #333; } (Class + Element = 0,1,1) และคุณเขียน CSS ใน Customizer ว่า p { color: #000; } (Element = 0,0,1) CSS ของคุณจะ ไม่มีผล เพราะ Specificity ต่ำกว่า วิธีแก้คือเพิ่ม Class ให้ Specific มากขึ้น หรือใช้ !important
| CSS Selector | ตัวอย่าง | Specificity Score | Priority |
|---|---|---|---|
| Element | p { } |
0,0,1 | ต่ำสุด |
| Class | .my-class { } |
0,1,0 | ปานกลาง |
| Class + Element | .content p { } |
0,1,1 | ปานกลาง+ |
| ID | #main { } |
1,0,0 | สูง |
| !important | color: red !important; |
Max | สูงสุด |
ตรวจสอบว่า Custom CSS โหลดถูกต้อง
หลังจากเพิ่ม Custom CSS แล้ว ขั้นตอนสำคัญคือการตรวจสอบว่า CSS โหลดถูกต้องและมีผลจริงบนเว็บไซต์ วิธีที่ดีที่สุดคือใช้ Browser DevTools ซึ่งมีอยู่ใน Browser ทุกตัว ทั้ง Chrome, Firefox และ Edge
วิธีตรวจสอบ CSS ด้วย DevTools
/* ขั้นตอนที่ 1: เปิด DevTools */
F12 (หรือ Ctrl+Shift+I บน Windows/Linux)
Cmd+Option+I (บน macOS)
/* ขั้นตอนที่ 2: เลือก Element ที่ต้องการตรวจ */
คลิกไอคอน "Inspector" (ลูกศรชี้ที่กล่อง) แล้วคลิก Element บนหน้าเว็บ
/* ขั้นตอนที่ 3: ดู Styles Panel ทางขวา */
จะเห็น CSS ทั้งหมดที่ Apply กับ Element นั้น
ถ้ามีขีดทับ = CSS ถูก Override โดย Specificity สูงกว่า
/* ขั้นตอนที่ 4: ค้นหา CSS ที่เพิ่มจาก Customizer */
ใน Styles Panel จะมี Source ว่ามาจากไหน เช่น:
customizer-additional-css (มาจาก Customizer)
style.css (มาจาก Theme)
plugin-name.css (มาจาก Plugin)
/* ขั้นตอนที่ 5: ทดสอบ CSS แบบ Live */
ใน Styles Panel สามารถแก้ไขค่า CSS ได้โดยตรง
(เปลี่ยนแค่ใน Browser ไม่บันทึกจริง — ใช้ทดสอบก่อน)
!important เป็นทางเลือกสุดท้ายวิธีตรวจสอบว่า CSS โหลดถูก File/Source
/* วิธี 1: ดู Page Source */
Ctrl+U (Windows) หรือ Cmd+U (macOS)
ค้นหาด้วย Ctrl+F: "additional-css" หรือ "custom-css"
/* วิธี 2: Network Tab ใน DevTools */
F12 → Network → กรอง "css"
Reload หน้า → ดูไฟล์ CSS ทั้งหมดที่โหลด
คลิกดูเนื้อหาของแต่ละไฟล์
/* วิธี 3: ตรวจ Computed Styles */
F12 → Elements → Computed (แท็บถัดจาก Styles)
แสดง CSS ที่ "ชนะ" ทั้งหมดหลังคำนวณ Specificity แล้ว
/* วิธี 4: CSS ใน Customizer — ดู Source Code */
แก้ปัญหาที่พบบ่อย
CSS ใส่แล้วแต่ไม่มีผล — Specificity ต่ำกว่า Theme
ปัญหานี้พบบ่อยที่สุด สาเหตุหลักคือ CSS ที่คุณเขียนมี Specificity ต่ำกว่า CSS ของ Theme ทำให้ Theme Override ทับ
วิธีแก้: เปิด DevTools (F12) คลิก Element ที่มีปัญหา แล้วดูใน Styles Panel ว่า CSS ของ Theme ใช้ Selector แบบไหน จากนั้นเขียน CSS ของคุณให้ Specific กว่าหรือเท่ากับ หรือใช้ !important เป็นทางเลือกสุดท้าย ตัวอย่าง: Theme ใช้ .site-content p { color: #333; } → คุณต้องใช้ .site-content p { color: #000 !important; }
Custom CSS หายหลัง Update Theme — ไม่ได้ใช้ Child Theme
ถ้าคุณแก้ไข style.css ของ Parent Theme โดยตรง หรือแก้ไฟล์อื่นใน Theme Folder โดยตรง CSS ทั้งหมดจะหายไปทันทีเมื่อ Theme มี Update
วิธีแก้: สร้าง Child Theme แล้วย้าย CSS ทั้งหมดไปไว้ใน style.css ของ Child Theme หรือใช้ Customizer Additional CSS / Plugin Simple Custom CSS แทน วิธีเหล่านี้เก็บ CSS ไว้ใน Database หรือไฟล์แยกจาก Theme จึงรอดจากการ Update
Error: "CSS parse error" ใน Customizer — มี Syntax ผิด
WordPress Customizer จะตรวจสอบ CSS Syntax ก่อน Publish ถ้ามีข้อผิดพลาดจะแสดง Error และไม่ยอม Save การแก้ปัญหาต้องหาตำแหน่งที่ Syntax ผิด
ปัญหาที่พบบ่อย:
- ลืมปิดวงเล็บ
{ }— ต้องมีเปิดและปิดคู่กันเสมอ - ลืม Semicolon (
;) ท้าย Property ทุกตัว - ใส่ Comment ผิด — ต้องใช้
/* comment */ไม่ใช่// comment - URL ใน
background-imageไม่ได้ใส่ Quote: ต้องใช้url('...')
วิธีแก้: ลองวาง CSS ใน Online Validator เช่น W3C CSS Validator ก่อนนำมาใส่ใน Customizer จะช่วยระบุบรรทัดที่ผิดได้ชัดเจน
Plugin CSS ขัดแย้งกัน — CSS Specificity ซ้อนทับ
เมื่อใช้หลาย Plugin ที่แต่ละตัวโหลด CSS ของตัวเอง อาจเกิดการขัดแย้งกัน เช่น Plugin หน้า Landing Page กับ Plugin Form Builder ต่างก็กำหนด Style ของ Button ไว้ ทำให้ปุ่มดูแปลกหรือไม่ตรงที่ต้องการ
วิธีแก้: ใช้ DevTools ตรวจหา Selector ที่ขัดแย้ง แล้วเขียน CSS Override เพิ่มเติมใน Customizer หรือ Custom CSS Plugin เพื่อกำหนดค่าสุดท้าย ในบางกรณีอาจต้องใช้ !important เพื่อบังคับ Style ที่ต้องการให้ชนะ หรือปิด CSS Loading ของ Plugin นั้นหากมีตัวเลือก
คำถามที่พบบ่อย
wp_options) ไม่ใช่ในไฟล์ของ Theme โดยตรง ดังนั้นไม่ว่าจะ Update หรือเปลี่ยน Theme ก็ตาม CSS จะยังคงอยู่ใน Database แต่จะใช้งานได้เมื่อ Activate Theme นั้นกลับมาเท่านั้น ข้อควรระวังคือถ้า เปลี่ยน Theme ใหม่ทั้งหมด Additional CSS จะยังอยู่ใน DB แต่อาจต้องปรับ Selector ใหม่ให้ตรงกับ Theme ใหม่!important ควรใช้เป็นทางเลือกสุดท้ายเท่านั้น ผลเสียคือทำให้การ Maintain CSS ยากขึ้นมาก เพราะถ้าใช้ !important หลายที่ เวลาต้องการ Override อีกครั้งก็ต้องใช้ !important ซ้อนกัน นำไปสู่ "CSS ยุ่งเหยิง" ที่ debug ลำบาก ในทางที่ดีกว่าควรเพิ่ม Specificity ของ Selector แทน เช่น เพิ่ม Class หรือ ID เข้าไปใน Selector ให้ Specific กว่า Theme แต่ถ้าเป็นมือใหม่และต้องการแก้ปัญหาเร็ว การใช้ !important ชั่วคราวก็ยอมรับได้<style> Tag แบบ Inline ใน <head> ซึ่งโหลดได้เร็ว แต่ไม่ถูก Cache เป็น External CSS File ในทางตรงกันข้าม Child Theme style.css เป็น External File ที่ Browser สามารถ Cache ไว้ได้ ทำให้การโหลดครั้งต่อไปเร็วกว่า ในทางปฏิบัติถ้า Custom CSS ไม่มากเกิน 2-3 KB ความแตกต่างแทบไม่มีผลต่อ Lighthouse Score สำหรับ CSS จำนวนมากควรใช้ Child Theme หรือ Plugin แบบ External File แทนสำหรับ WordPress Hosting ที่รองรับ Custom CSS และปรับแต่ง Theme ได้เต็มที่ asiagb.com ให้บริการ Shared Hosting พร้อม DirectAdmin ที่ใช้งานง่าย ตรวจสอบโดเมนก่อนสมัครได้ที่ dnsxray.com