สร้าง Custom Post Type WordPress ด้วย Plugin (ไม่ต้องเขียนโค้ด)

เรียนรู้วิธีสร้างเนื้อหา Custom Content Type เช่น Portfolio, Product, Testimonial ด้วย Plugin ฟรี ใช้ Admin Panel ได้เหมือน Posts

Custom Post Type WordPress WordPress

Custom Post Type (CPT) คืออะไร?

Custom Post Type หรือ CPT คือเนื้อหาพิเศษใน WordPress นอกเหนือจากค่าเริ่มต้น Post และ Page ตัวอย่างเช่น Portfolio (สำหรับแสดงผลงาน), Products (สำหรับสินค้า), Testimonials (สำหรับเสียงสะท้อน), Team Members (สำหรับสมาชิกทีม) หรือ Case Studies (สำหรับการศึกษากรณี)

WordPress มาพร้อมกับ CPT มาตรฐาน เช่น Attachment, Revision, Nav Menu Item แต่จำนวนมากมายไม่พอสำหรับทุกจุดประสงค์ การสร้าง CPT ของเราเอง ช่วยให้เนื้อหาจัดระเบียบได้ดีขึ้น แต่ละประเภทจะมี Admin Menu ของตัวเอง Custom Fields ของตัวเอง และสามารถตั้งค่า Template การแสดงผลแยกต่างหากได้

ทำไมต้องใช้ Custom Post Type?

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

ปัญหากับการเขียนโค้ดใน functions.php

สำหรับผู้ใช้ Shared Hosting ที่ใช้ Hosting Control Panel (เช่น cPanel) ที่ไม่สะดวกในการแก้ไข functions.php โดยตรง (หรือกลัวหกล้ม) มีปัญหาหลายประการ:

วิธีแก้: ใช้ Plugin สำเร็จรูป ที่มี UI ให้คลิกเลือก เนื้อหา CPT จะเก็บใน Database ไม่หกล้มเมื่อเปลี่ยนธีม และสะดวกใจสำหรับมือใหม่

Plugin ยอดนิยมสำหรับ Custom Post Type

1. Custom Post Type UI (CPT UI)

Custom Post Type UI คือ Plugin ฟรี ยอดนิยมที่ใช้ Admin Panel ให้ลงทะเบียน (Register) Post Type และ Taxonomy ใหม่ โดยไม่ต้องเขียนโค้ด

2. Advanced Custom Fields (ACF)

Advanced Custom Fields เป็น Plugin ยอดนิยมที่ใช้เพิ่ม Custom Field เข้าไป Post Type ใดก็ได้ (ปกติหรือ Custom) ช่องข้อมูลสามารถเป็นแบบ Text, Image, Date, Repeater (ซ้ำได้หลายแถว) เป็นต้น

3. Pods

Pods คือ All-in-One Solution ที่รวมฟีเจอร์ของ CPT UI และ ACF ไว้ที่เดียว สร้างได้ทั้ง Post Type และ Custom Field ใน Plugin เดียว

ขั้นตอน: สร้าง CPT ด้วย CPT UI และ ACF

ขั้นตอนต่อไปนี้อธิบายวิธีสร้าง CPT ใหม่ "Portfolio" (พอร์ตโฟลิโอ) เพื่อแสดงผลงานของคุณ:

ขั้นที่ 1: ติดตั้ง Custom Post Type UI

  1. ไปที่ WordPress Admin Dashboard
  2. เลือก Plugins > Add New Plugin
  3. ค้นหา "Custom Post Type UI"
  4. คลิก Install Now แล้วกด Activate

ขั้นที่ 2: สร้าง Post Type ใหม่

  1. ในแดชบอร์ด Admin ไปที่ CPT UI > Add/Edit Post Types
  2. คลิก Add New Post Type
  3. กรอกข้อมูล:
    • Post Type Singular Label: Portfolio (ชื่อเดี่ยว)
    • Post Type Plural Label: Portfolios (ชื่อพหูพจน์)
    • Post Type Name: portfolio (ชื่อ slug ที่ใช้ใน URL)
    • Description: "Showcase of my works and projects"
  4. ลงมาที่ Settings เลือก:
    • ✓ Public
    • ✓ Show in Admin Bar
    • ✓ Show in REST API (สำหรับความเข้ากันได้ในอนาคต)
  5. ที่ด้านล่างสุด ให้เลือก Icon สำหรับ Menu (เช่น dashicons-images-alt สำหรับรูปภาพ)
  6. คลิก Add Post Type
  7. ตอนนี้ Menu "Portfolios" จะปรากฏในแดชบอร์ด Admin

ขั้นที่ 3: ติดตั้ง Advanced Custom Fields (ACF)

  1. ไปที่ Plugins > Add New Plugin
  2. ค้นหา "Advanced Custom Fields"
  3. ติดตั้ง และกด Activate

ขั้นที่ 4: เพิ่ม Custom Field ให้กับ Post Type

  1. ในแดชบอร์ด ไปที่ ACF > Field Groups
  2. คลิก Add New Field Group
  3. ตั้งชื่อ Field Group เช่น "Portfolio Details"
  4. ด้านล่าง คลิก Add Field เพื่อเพิ่ม Field แรก
  5. เพิ่มฟิลด์เหล่านี้:
    • Field Name: client_name | Type: Text | Label: ชื่อไคลเอนต์
    • Field Name: project_url | Type: URL | Label: ลิงก์โครงการ
    • Field Name: project_image | Type: Image | Label: รูปภาพโครงการ
    • Field Name: technologies | Type: Text | Label: เทคโนโลยีที่ใช้
  6. เลื่อนลงมา ที่ "Display Location" ให้เลือก Post Type is equal to Portfolio
  7. คลิก Publish

ขั้นที่ 5: เพิ่มข้อมูล Portfolio ใหม่

  1. ไปที่ Portfolios ในเมนู Admin
  2. คลิก Add New Portfolio
  3. กรอก Title และ Description ปกติเหมือน Post
  4. เลื่อนลง จะเห็น Field ที่สร้าง (ชื่อไคลเอนต์, ลิงก์โครงการ, รูปภาพ, เทคโนโลยี)
  5. กรอกข้อมูลลงไป
  6. คลิก Publish

ขั้นที่ 6: สร้าง Template แสดงผล (ต้องแก้โค้ด Theme)

ขั้นนี้ต้องแตะโค้ด HTML/PHP เล็กน้อย หรือใช้ Block Theme Editor:

Tip: ถ้าไม่ต้องการแก้ไข Template โดยตรง ลองใช้ Plugin เช่น Elementor Pro หรือ Divi Builder ที่มี UI สำหรับสร้าง Template ของ CPT ได้ง่าย หรือใช้ Pods ที่มี Template Editor ในตัว

ข้อมูลเพิ่มเติม: การใช้ ACF Pro

หากต้องการฟีเจอร์ขั้นสูง เช่น Repeater Field (เพื่อเพิ่มข้อมูลหลายแถวในรูปแบบ Row) หรือ Flexible Content ให้ไปซื้อ ACF Pro (แล้วนำเข้าลิขสิทธิ์) ตัวอย่างเช่น หาก Portfolio ต้องแสดงหลาย Screenshot:

// ตัวอย่าง Repeater Field ใน ACF Pro
if ( have_rows('project_screenshots') ) {
    while ( have_rows('project_screenshots') ) {
        the_row();
        $image = get_sub_field('screenshot_image');
        echo '<img src="' . $image['url'] . '">';
    }
}


ตรวจสอบว่า Custom Post Type ทำงานถูกต้อง

หลังจากตั้งค่าเสร็จแล้ว ให้ทดสอบด้วยขั้นตอนต่อไปนี้:

# 1. เข้าแดชบอร์ด Admin ตรวจสอบว่า Menu "Portfolios" ปรากฏ

# 2. สร้าง Portfolio ใหม่ และเพิ่มข้อมูล Field ทั้งหมด

# 3. Publish และตรวจสอบ URL ใหม่
# ควรเป็น: https://yourdomain.com/portfolio/portfolio-name

# 4. ตรวจสอบว่า Permalink ทำงาน (ไม่ขึ้น 404)

# 5. ดูเนื้อหา CPT ที่ Archive Page
# ควรเป็น: https://yourdomain.com/portfolio
Tip: ถ้า Permalink ขึ้น 404 Error ให้ไปที่ Settings > Permalinks แล้วคลิก "Save Changes" เพื่อให้ WordPress ตั้งค่า .htaccess ใหม่ (เป็นปัญหาทั่วไปหลังสร้าง CPT ใหม่)

แก้ปัญหาที่พบบ่อย

Error: "ไม่เห็น Menu ของ Custom Post Type ใน Admin"

ปัญหานี้มักเกิดจากการ ตั้งค่า Public ไม่ถูก ให้ไปที่ CPT UI > Add/Edit Post Types แล้วเลือก Post Type ที่สร้าง แล้วตรวจสอบว่า "Show in Menu" ถูกติ๊ก ถ้ายังไม่ปรากฏ ให้ลองรีเฟรช Admin Panel หรือ Reload หน้า

Error: "Custom Field ไม่ปรากฏเมื่อแก้ไข Post"

อาจเกิดจาก Field Group ยังไม่กำหนดให้มองเห็นกับ Post Type นี้ ให้ไปที่ ACF > Field Groups คลิกแก้ไข Field Group ที่สร้าง แล้วตรวจสอบที่ด้านล่างว่า "Display Location" ตั้งค่า "Post Type is equal to [CPT ที่ต้องการ]" ถูกหรือไม่ บันทึกหลังจากแก้ไข

Error: "Permalink 404 หลังจากสร้าง CPT"

นี่คือปัญหาทั่วไป WordPress ต้องรีเซ็ต Permalink Settings เมื่อมี Post Type ใหม่ ไปที่ Settings > Permalinks ปล่อยให้เป็นค่าเดิม แล้วคลิก "Save Changes" ระบบจะสร้างค่า .htaccess ใหม่ และ Permalink ควรทำงานแล้ว

Error: "ข้อมูล Field ACF ว่างเปล่าเมื่อแสดงผลบน Front-end"

ปัญหานี้เกิดจากการใช้ฟังก์ชัน get_field() ไม่ถูก ตัวอักษรของชื่อ Field Name ต้องตรงกัน (ใช้ Underscore ไม่ใช่ Dash) ตัวอย่างถูก: get_field('client_name'); ถ้า Field Name ผิด ค่าจะเป็น false

Error: "Plugin ขัดแย้ง Custom Post Type ไม่เห็น"

หากใช้ Plugin หลาย ตัวที่สร้าง CPT (เช่น WooCommerce, Easy Digital Downloads) อาจมีชื่อ CPT ที่ซ้ำกัน หรือเกิด Conflict เลิกทำงาน ให้ลองปิด Plugin ตัวอื่นลงนอกเหนือจาก CPT UI และ ACF เพื่อแยก ปัญหา


คำถามที่พบบ่อย

Q: ความต่างระหว่าง Custom Post Type และ Custom Taxonomy คืออะไร?

A: Post Type คือประเภทของเนื้อหา (เช่น Posts, Pages, Products) Taxonomy คือวิธีจัดกลุ่ม (เช่น Categories, Tags) โดยพื้นฐานของ WordPress แล้ว Post Type ของเรา (เช่น Portfolio) สามารถใช้ Category/Tag ของ Post ธรรมดาได้ แต่ Custom Taxonomy ช่วยให้สร้างระบบจำแนกแยกเพื่อ CPT นั้น เช่น "Portfolio Category" "Portfolio Skill Tag" โดยไม่กระทบกับ Post Categories

Q: ถ้าเปลี่ยนธีม ข้อมูล Custom Post Type หายไปไหม?

A: ข้อมูลจะไม่หายไป จะหายไปแค่ Template ของการแสดงผลเท่านั้น เนื้อหา Custom Post Type ทั้งหมด (บันทึก) จะเก็บอยู่ในฐานข้อมูล และยังคงอยู่เมื่อเปลี่ยนธีม หากเปลี่ยนธีมแล้วไม่เห็น CPT ลองรีเซ็ต Permalink Settings อีกครั้ง และตรวจสอบว่าธีมใหม่รองรับการแสดงผล Post Type นั้น ๆ

Q: สามารถเพิ่ม Custom Field ให้กับ Post Type มาตรฐาน (Posts, Pages) ได้ไหม?

A: ได้ครับ Advanced Custom Fields (ACF) สามารถเพิ่ม Field ให้กับ Post, Page, หรือ Custom Post Type ใดก็ได้ เมื่อสร้าง Field Group ใน ACF เพียงตั้ง "Display Location" เป็น "Post Type is equal to post" (สำหรับ Post ธรรมดา) หรือ "post_type is equal to page" (สำหรับ Page) ก็เสร็จแล้ว