WordPress
Advanced Custom Fields (ACF) คืออะไร?
Advanced Custom Fields หรือเรียกสั้น ๆ ว่า ACF คือ Plugin ของ WordPress ที่ช่วยให้คุณสร้างและจัดการข้อมูลเพิ่มเติมสำหรับโพสต์ (Posts) และหน้า (Pages) ของคุณโดยไม่ต้องเขียนโค้ด PHP เอง ปกติแล้ว โพสต์ของ WordPress จะมีข้อมูลพื้นฐาน เช่น ชื่อเรื่อง (Title), เนื้อหา (Content), และวันที่เขียน (Date) แต่หากคุณต้องการเพิ่มข้อมูลเพิ่มเติม เช่น ราคา, สี, ตำแหน่ง, หรือข้อมูลพิเศษอื่น ๆ ก็สามารถใช้ ACF ได้
ACF ช่วยให้คุณสร้าง Custom Fields (ช่องข้อมูลเสริม) ได้ง่าย ๆ และแสดงข้อมูลเหล่านั้นบนหน้าเว็บไซต์ของคุณ ทั้งหมดนี้ทำได้โดยใช้ Interface GUI ที่ใช้งานง่าย ไม่ต้องเขียนโค้ด PHP
ประเภทของ Custom Fields ใน ACF
ACF รองรับ Custom Field Types มากมายที่คุณสามารถเลือกใช้ตามความต้องการ:
- Text (ข้อความ) — ช่องข้อความธรรมดา เช่น ชื่อ, ราคา, URL
- Textarea (พื้นที่ข้อความ) — ช่องข้อความหลายบรรทัด เช่น รายละเอียดสินค้า
- Number (ตัวเลข) — ช่องสำหรับใส่ตัวเลข เช่น ราคา, จำนวน, คะแนน
- Email (อีเมล) — ช่องอีเมล พร้อมการตรวจสอบ Format
- Image (รูปภาพ) — อัปโหลดรูปภาพและเก็บเป็น Custom Field
- File (ไฟล์) — อัปโหลดไฟล์หรือเอกสาร (PDF, DOC, เป็นต้น)
- Select (ตัวเลือก) — ดรอปดาวน์ให้เลือกตัวเลือกจากรายการที่กำหนด
- Checkbox (กล่องติ๊กถูก) — เลือกหนึ่งหรือมากกว่าหนึ่งตัวเลือก
- Radio Button (ปุ่มตัวเลือก) — เลือกเพียงหนึ่งตัวเลือกจากรายการ
- Repeater (ซ้ำกัน) — สร้างกลุ่มของ Fields ที่เหมือนกันหลาย ๆ ชุด เช่น รายการผู้ต้องการติดต่อหลาย ๆ คน
- Color Picker (เลือกสี) — เลือกสีพร้อมแสดง Color Code
- Date Picker (เลือกวัน) — เลือกวันที่จากปฏิทิน
- Time Picker (เลือกเวลา) — เลือกเวลา
วิธีติดตั้ง ACF Plugin
ACF มีรุ่นฟรีและรุ่นเสียเงิน (Pro) ให้เลือกใช้:
- ไปที่ WordPress Admin Dashboard
- ไปที่ Plugins > Add New
- ค้นหา "Advanced Custom Fields" (ผู้พัฒนา: Delicious Brains)
- คลิกปุ่ม Install Now
- หลังติดตั้ง คลิก Activate
- ไปที่เมนู ACF ที่ด้านซ้ายของ Dashboard เพื่อเริ่มสร้าง Custom Fields
หลังติดตั้ง ACF แล้ว คุณจะเห็นเมนูใหม่ชื่อ ACF ปรากฏที่ Admin Dashboard ซึ่งจากนี้ต่อไป คุณสามารถเริ่มสร้าง Custom Fields Group ได้
วิธีสร้าง Custom Fields ด้วย ACF
ขั้นตอนพื้นฐานสำหรับสร้าง Custom Fields Group:
- ไปที่ ACF > Field Groups
- คลิก Add New เพื่อสร้าง Group ใหม่
- ตั้งชื่อ Group เช่น "Product Details" หรือ "Author Information"
- คลิก Add Field เพื่อเพิ่ม Custom Field แรก
- ใส่ชื่อ Field เช่น "Price" และเลือกประเภท เช่น "Number"
- ตั้งค่าเพิ่มเติม เช่น Default Value, Required หรือไม่ (ถ้าต้อง)
- คลิก Add Field อีกครั้งเพื่อเพิ่ม Field ต่อไป
- ในส่วน "Display Settings" ให้กำหนดว่า Custom Fields Group นี้ควรแสดงใน Post Type ใด เช่น Products, Blog Posts เป็นต้น
- คลิก Publish เพื่อบันทึก
วิธีแสดง Custom Fields บนหน้าเว็บไซต์
หลังสร้าง Custom Fields แล้ว คุณต้องแสดงข้อมูลเหล่านั้นบนหน้าเว็บไซต์ วิธีทั่วไปมีสามวิธี:
วิธีที่ 1: ใช้ Block Editor (ถ้า WordPress 5.0 ขึ้นไป)
ขั้นตอน:
- เข้าไปแก้ไข Product หรือ Post ของคุณ
- ถ้า ACF รองรับ Block Editor บนธีม/Plugin นั้น คุณจะเห็น ACF Block มีให้เลือก
- เพิ่ม ACF Block แล้วเลือก Custom Field ที่อยากแสดง
- Block จะ Render ข้อมูล Custom Field โดยอัตโนมัติ
วิธีที่ 2: ใช้ ACF Shortcode
ถ้าต้องการแสดง Custom Field ใน Post Content หรือ Page Content ให้ใช้ Shortcode ของ ACF:
[acf field="field_name"]
แทน "field_name" ด้วยชื่อจริงของ Custom Field เช่น [acf field="price"]
วิธีที่ 3: ใช้ Loops แบบ PHP (สำหรับ Developers)
ในไฟล์ Template ของธีม (เช่น single.php, archive.php) คุณสามารถใช้ Function ของ ACF เพื่อแสดง Custom Field:
<?php
$price = get_field( 'price' );
echo 'Product Price: ' . $price;
?>
วิธีนี้ต้องรู้ PHP เล็กน้อย แต่ให้ความยืดหยุ่นสูงสุด
ACF Free vs ACF Pro
ACF มีสองเวอร์ชัน ที่ต่างกันในเรื่องของคุณสมบัติ:
- ACF Free — เหมาะสำหรับเว็บไซต์ทั่วไป มี Field Types ที่พอเพียง (Text, Textarea, Number, Image, Select, Repeater เป็นต้น) ใช้ได้ฟรีและอัพเดตได้ตลอด
- ACF Pro — เวอร์ชันเสียเงิน มีคุณสมบัติเพิ่มเติม เช่น Flexible Content, Gallery, Map, Options Page (สำหรับเก็บตั้งค่า), Conditional Logic ที่ขั้นสูง และ Post Object Relationship ที่ดีกว่า หากต้องการการจัดการเนื้อหาที่ซับซ้อน ACF Pro อาจจะคุ้มค่า
สำหรับเว็บไซต์เก่าและเซิร์ฟเวอร์ Shared Hosting ส่วนใหญ่ ACF Free ก็เพียงพอแล้ว
ตรวจสอบว่า ACF ทำงานถูกต้อง
หลังติดตั้ง ACF และสร้าง Custom Fields Group ให้ทดสอบดังต่อไปนี้:
# 1. ไปที่ ACF > Field Groups ในแดชบอร์ด
# ตรวจสอบว่า Field Group ที่สร้างแล้วปรากฏ
# 2. ไปที่ Post/Product แล้วตรวจดูว่า Custom Fields ปรากฏด้านล่าง Content Editor
# 3. ใส่ข้อมูลข้างใน Custom Fields แล้วบันทึก
# 4. ไปดูหน้า Post/Product บน Frontend
# ตรวจสอบว่า Custom Field Data แสดงขึ้นหรือไม่
# หากไม่แสดง อาจต้องแก้ไข Template File หรือเพิ่ม Shortcode
# 5. ลองทดสอบ Repeater Field (ถ้ามี)
# โดยเพิ่มหนึ่งหรือมากกว่าหนึ่งรายการแล้วดูว่าแสดงได้หรือไม่
แก้ปัญหาที่พบบ่อย
Error: "Custom Fields ไม่ปรากฏเมื่อแก้ไข Post"
สร้าง Custom Fields Group แล้ว แต่ไม่เห็นปรากฏในหน้าแก้ไข Post
วิธีแก้: ตรวจสอบ Display Settings ของ Field Group ว่าได้กำหนด Post Type ที่ถูกต้องหรือไม่ ถ้าตั้งไว้เป็น "Product" แต่คุณแก้ไข "Post" ธรรมชาติ Custom Fields จะไม่ปรากฏ ให้ไปแก้ไข Field Group และเปลี่ยน Post Type ให้ตรงกับที่คุณต้อง
Error: "Custom Fields แสดง Label แทนที่จะเป็นข้อมูล บนหน้า Frontend"
ใส่ข้อมูลใน Custom Fields แล้วบันทึก แต่เมื่อไปดู Frontend แสดงเป็น Shortcode หรือ Label เท่านั้น ไม่เห็นข้อมูลจริง
วิธีแก้: ธีมหรือ Template ของคุณยังไม่ได้เตรียม Loop เพื่อแสดง ACF Field ให้ลองเพิ่ม Shortcode [acf field="field_name"] ลงใน Post Content หรือแก้ไขไฟล์ Template .php ของธีม เพื่อเพิ่มบรรทัดโค้ด PHP ที่ดึงข้อมูล ACF Field
Error: "Repeater Field ไม่ทำงาน หรือแสดงผิด"
สร้าง Repeater Field (เช่น ลูกค้าหลายคน) แต่แสดงผิดหรือไม่ทำงาน
วิธีแก้: Repeater Field ต้องใช้ Loop ใน PHP เพื่อแสดง เช่น while (have_rows('field_name')) loop ที่มี get_sub_field() ลองอ้างอิง Documentation ของ ACF หรือติดต่อผู้พัฒนาธีมเพื่อขอตัวอย่างโค้ด PHP ที่ถูกต้อง
Error: "ACF Plugin ทำให้เว็บไซต์ช้า"
ติดตั้ง ACF แล้วเว็บไซต์ช้าลง
วิธีแก้: ACF เองไม่ได้ช้า แต่อาจเกิดจาก Custom Fields ที่มีขนาดใหญ่เกินไป (เช่น Repeater ที่มีรายการหลาย ๆ พันรายการ) ลองใช้ Plugin Caching เช่น WP Super Cache เพื่อแคช ข้อมูล ACF Fields
Error: "ข้อมูล ACF ไม่ถูกบันทึก"
ใส่ข้อมูลใน Custom Fields แล้วคลิก Save แต่ข้อมูลไม่บันทึก
วิธีแก้: อาจเกิดจาก Permission ที่ไม่เพียงพอ หรือ PHP Error ลองตรวจสอบ Browser Console (F12 > Console) ว่ามี Error อะไรหรือไม่ หรือลองปิด Plugin อื่น ๆ ชั่วคราวเพื่อตรวจสอบว่า Plugin ไหนขัดแย้ง
คำถามที่พบบ่อย
Q: แบบไหนเวลาต้องใช้ ACF และแบบไหนที่ไม่ต้อง?
A: ใช้ ACF ถ้าต้องการเพิ่มข้อมูลเพิ่มเติมที่นอกเหนือไปจากชื่อเรื่องและเนื้อหาโพสต์ เช่น ราคา, สี, ผู้ติดต่อ เป็นต้น ถ้าเป็นบล็อกข้อความธรรมดา ไม่จำเป็นต้องใช้ ACF ยิ่ง ACF ยิ่งมีประโยชน์เมื่อต้องการ Custom Data ที่มีรูปแบบแน่นอนและซ้ำกันหลาย ๆ ครั้ง
Q: ACF Free เพียงพอสำหรับ WooCommerce ร้านค้าขนาดเล็กหรือไม่?
A: ได้ ACF Free มี Repeater Field, Text, Number, Image เพียงพอสำหรับเพิ่มข้อมูลสินค้า WooCommerce ขนาดเล็ก ถ้าร้านค้าเล็ก ไม่ต้องใช้ ACF Pro ก็ได้ เพราะ WooCommerce เองก็มี Product Attributes และ Custom Meta พอแล้ว
Q: ถ้าสืบค้นข้อมูล ACF ผ่าน SQL ได้ไหม?
A: ได้ ACF เก็บข้อมูล Custom Fields ใน WordPress Meta Table (wp_postmeta) คุณสามารถ Query ได้ผ่าน SQL หรือใช้ Function WordPress เช่น get_post_meta() แต่ไม่แนะนำให้ Query โดยตรงผ่าน SQL เพราะอาจเสี่ยงต่อการเสียหาย ให้ใช้ ACF Functions แทน
อยากรู้ว่าการตั้งค่าโดเมนหรือ DNS ของคุณถูกต้องหรือไม่ ลองตรวจสอบฟรีได้ที่ dnsxray.com เครื่องมือวิเคราะห์สุขภาพโดเมนที่ใช้งานง่าย