คำอธิบายโดยละเอียดเกี่ยวกับ WordPress ประเภทบทความที่กำหนดเอง

อ่าน 3 นาที
2026-03-14
2026-06-04
2,754
I earn commissions when you shop through the links below, at no additional cost to you.

คำอธิบายโดยละเอียดเกี่ยวกับ WordPress ประเภทบทความที่กำหนดเอง

WordPress ชนิดบทความมาตรฐานpostและชนิดหน้าpageเพียงพอสำหรับการจัดการเนื้อหาส่วนใหญ่ แต่สำหรับเว็บไซต์ที่ซับซ้อนซึ่งต้องการแสดงเนื้อหาเฉพาะอย่างมีโครงสร้าง (เช่น ผลิตภัณฑ์ ผลงาน โครงการ กิจกรรม ทีมงาน ฯลฯ) ฟังก์ชันการทำงานของมันก็ดูจะไม่เพียงพอ การเกิดขึ้นของชนิดบทความที่กำหนดเองนั้น เพื่อแก้ไขปัญหาหลักนี้โดยเฉพาะ มันอนุญาตให้นักพัฒนาก้าวข้ามขอบเขตของ “บทความ” และ “หน้า” เพื่อสร้างระบบจัดการหลังบ้าน การแสดงผลด้านหน้า และตรรกะการสืบค้นเฉพาะสำหรับเนื้อหาประเภทใดก็ได้

ด้วยชนิดบทความที่กำหนดเอง คุณสามารถเพิ่มอินเทอร์เฟซการเผยแพร่แยกต่างหากสำหรับ “ผลิตภัณฑ์” สร้างฟิลด์ป้อนข้อมูลเฉพาะสำหรับ “สมาชิกทีม” และกำหนดโครงสร้าง URL วิธีการจัดหมวดหมู่ และไฟล์เทมเพลตที่เป็นเอกลักษณ์ให้กับเนื้อหาเหล่านี้ สิ่งนี้ไม่เพียงแต่เพิ่มความชัดเจนและประสิทธิภาพในการจัดการเนื้อหาอย่างมาก แต่ยังเป็นรากฐานทางเทคนิคที่ขาดไม่ได้สำหรับการสร้างเว็บไซต์ WordPress ระดับองค์กรที่มีการปรับแต่งสูง

ทำไมจึงต้องกำหนดประเภทบทความเอง

การใช้ประเภทบทความที่กำหนดเอง สามารถแยกเนื้อหาประเภทต่างๆ ทางตรรกะได้ ซึ่งนำมาซึ่งข้อได้เปรียบที่สำคัญหลายประการ

แนะนำให้อ่าน การวิเคราะห์เชิงลึกของ WooCommerce: คู่มือฉบับสมบูรณ์ในการสร้างเว็บไซต์อีคอมเมิร์ซที่มีประสิทธิภาพตั้งแต่เริ่มต้น

ทำให้การจัดการเนื้อหาแยกออกจากกันอย่างชัดเจน

เมื่อเว็บไซต์ของคุณมีทั้งบล็อก การแสดงผลิตภัณฑ์ ข่าวประกาศ และกรณีศึกษาที่สำเร็จ หากใช้ “บทความ” เริ่มต้นทั้งหมดในการจัดการ หลังบ้านจะกลายเป็นความสับสนวุ่นวาย เนื้อหาที่มีลักษณะแตกต่างกันปะปนอยู่ในรายการเดียวกัน การแก้ไขและการค้นหาล้วนไม่สะดวกอย่างยิ่ง

UltaHost WordPress โฮสติ้ง
การรับประกันคืนเงินภายใน 30 วัน, แบนด์วิธและฐานข้อมูลไม่จำกัด, การป้องกัน DDoS ฟรี, ซื้อ 3 ปีลดราคา 50%

หลังจากสร้างประเภท “ผลิตภัณฑ์” และ “เคส” แยกกัน ผู้ดูแลระบบจะเห็นเมนู “ผลิตภัณฑ์” และ “เคส” แยกกันในเมนูด้านซ้ายของแอดมิน เมื่อคลิกเข้าไป อินเทอร์เฟซการจัดการจะคล้ายกับหน้าจอการจัดการบทความ แต่แยกจากกันโดยสมบูรณ์และไม่รบกวนซึ่งกันและกัน การแยกประเภทนี้ทำให้การจัดระเบียบเนื้อหาเป็นระเบียบและลดความซับซ้อนในการจัดการอย่างมาก

กำหนดฟิลด์และเมตาดาต้าเฉพาะ

ประเภทบทความเริ่มต้นส่วนใหญ่ประกอบด้วยฟิลด์ทั่วไป เช่น หัวข้อ, เนื้อหา, บทคัดย่อ, หมวดหมู่ และแท็ก สำหรับ “ผลิตภัณฑ์” คุณอาจต้องการฟิลด์ เช่น ราคา, รายละเอียดสเปค, สต็อก สำหรับ “กิจกรรม” จำเป็นต้องมีเวลาเริ่มต้น, เวลาสิ้นสุด, สถานที่ เป็นต้น

ประเภทบทความที่กำหนดเองสามารถผสานรวมกับปลั๊กอินหรือโค้ด เช่น Advanced Custom Fields เพื่อเพิ่มฟิลด์เมตาดาต้าสำหรับประเภทเนื้อหาเฉพาะได้อย่างง่ายดาย ฟิลด์เหล่านี้จะปรากฏในรูปแบบฟอร์มในแอดมิน และสามารถเรียกใช้อย่างยืดหยุ่นผ่านแท็กเทมเพลตในส่วนหน้า ซึ่งช่วยให้สามารถปรับแต่งโครงสร้างเนื้อหาได้อย่างลึกซึ้ง

สร้างโครงสร้าง URL และระบบเทมเพลตแยกอิสระ

ประเภทบทความที่กำหนดเองสามารถกำหนด URL แทน (Slug) ของตัวเองได้ เช่น คุณสามารถตั้งค่าลิงก์ถาวรสำหรับประเภทผลิตภัณฑ์เป็น/product/%postname%และตั้งค่าลิงก์ถาวรสำหรับกิจกรรมเป็น/event/%postname%ซึ่งไม่เพียงทำให้ URL มีความหมายและเป็นมิตรกับ SEO มากขึ้น แต่ยังช่วยให้ผู้ใช้เข้าใจโครงสร้างเว็บไซต์ได้ง่ายขึ้น

แนะนำให้อ่าน เรียนรู้เทมเพลตหน้า WooCommerce แบบกำหนดเอง: คู่มือการพัฒนาเชิงปฏิบัติตั้งแต่พื้นฐานจนถึงขั้นสูง

ที่สำคัญกว่านั้น ระบบลำดับชั้นเทมเพลตของ WordPress จะค้นหาไฟล์เทมเพลตที่ตรงกับประเภทโพสต์ที่กำหนดเองเป็นอันดับแรก ตัวอย่างเช่น สำหรับประเภทที่ชื่อว่าproductระบบจะค้นหาตามลำดับเช่นsingle-product.phpsingle.phpsingular.phpเป็นต้น ซึ่งช่วยให้คุณสามารถออกแบบสไตล์การแสดงผลส่วนหน้า (front-end) ที่แตกต่างกันอย่างสิ้นเชิงสำหรับเนื้อหาประเภทต่างๆ โดยไม่ต้องเขียนตรรกะการตรวจสอบเงื่อนไขที่ซับซ้อนในเทมเพลตเดียว

สองวิธีในการสร้างประเภทโพสต์ที่กำหนดเอง

ใน WordPress มีสองวิธีหลักในการสร้างประเภทโพสต์ที่กำหนดเอง: การลงทะเบียนผ่านโค้ดในไฟล์ฟังก์ชันของธีม และการใช้ปลั๊กอินเฉพาะทางที่มีประสิทธิภาพ

ใช้ปลั๊กอินเพื่อสร้างอย่างรวดเร็ว

สำหรับผู้ใช้ที่ไม่คุ้นเคยกับการพัฒนาด้วยโค้ดหรือต้องการใช้งานอย่างรวดเร็ว การใช้ปลั๊กอินเป็นวิธีที่สะดวกที่สุด Custom Post Type UI และ Toolset Types เป็นสองปลั๊กอินที่ได้รับความนิยมอย่างกว้างขวาง พวกเขามีส่วนติดต่อผู้ใช้ที่ใช้งานง่าย ช่วยให้คุณกำหนดพารามิเตอร์ทั้งหมดของประเภทโพสต์ เช่น ชื่อ ป้ายกำกับ ไอคอน การเปิดเผยต่อสาธารณะ การรองรับหน้าอาร์ไคฟ์ ผ่านการกรอกฟอร์ม

hosting.com 共享主机
高性能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候24小时、全天候的专家内部支持,高级安全措施,包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 73%

ข้อดีของวิธีนี้คือไม่ต้องเขียนโค้ด การตั้งค่ามีผลทันที และมักจะรวมเข้ากับฟังก์ชันการจัดการฟิลด์เมตาของปลั๊กอินได้ดี อย่างไรก็ตาม ข้อเสียก็เห็นได้ชัดเช่นกัน: ฟังก์ชันถูกจำกัดด้วยตัวเลือกที่ปลั๊กอินให้มา ระดับการปรับแต่งอาจไม่เพียงพอ และหากเปลี่ยนธีมหรือปิดใช้งานปลั๊กอินในอนาคต แม้ว่าข้อมูลจะยังคงอยู่ในฐานข้อมูล แต่ฟังก์ชันการลงทะเบียนอาจสูญหายไป จำเป็นต้องมีโค้ดเพิ่มเติมเพื่อประกาศใหม่

การลงทะเบียนผ่านฟังก์ชันโค้ด (แนะนำ)

สำหรับนักพัฒนาที่มุ่งเน้นความเสถียร การควบคุมได้ และประสิทธิภาพ การลงทะเบียนผ่านโค้ดในธีมหรือปลั๊กอินที่กำหนดเองเป็นวิธีที่มืออาชีพกว่าและแนะนำมากกว่า หลักการสำคัญของวิธีนี้คือการใช้ register_post_type() ฟังก์ชัน

คุณต้องวางโค้ดลงทะเบียนในไฟล์functions.phpของธีม หรือดีกว่านั้นคือสร้างปลั๊กอินฟังก์ชันไซต์แยกต่างหาก ข้อดีของการทำเช่นนี้คือการแยกฟังก์ชันออกจากธีม แม้จะเปลี่ยนธีม ประเภทโพสต์ที่กำหนดเองและข้อมูลของมันยังคงทำงานได้อย่างสมบูรณ์

แนะนำให้อ่าน การวิเคราะห์ขั้นตอนการสร้างเว็บไซต์แบบครบวงจร: คู่มือเทคนิคการสร้างเว็บไซต์ระดับมืออาชีพตั้งแต่เริ่มต้น

นี่คือตัวอย่างโค้ดพื้นฐานสำหรับการสร้างประเภทโพสต์ที่กำหนดเอง “ผลิตภัณฑ์”:

function create_product_post_type() {
    $labels = array(
        'name'               => '产品',
        'singular_name'      => '产品',
        'menu_name'          => '产品管理',
        'add_new'            => '添加新产品',
        'add_new_item'       => '添加新产品',
        'edit_item'          => '编辑产品',
        'new_item'           => '新产品',
        'view_item'          => '查看产品',
        'search_items'       => '搜索产品',
        'not_found'          => '未找到产品',
        'not_found_in_trash' => '回收站中无产品',
    );

    $args = array(
        'labels'              => $labels,
        'public'              => true, // 是否公开
        'has_archive'         => true, // 是否有归档页
        'menu_icon'           => 'dashicons-cart', // 后台菜单图标
        'menu_position'       => 5, // 菜单位置
        'supports'            => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'), // 支持的功能
        'rewrite'             => array('slug' => 'products'), // URL别名
        'show_in_rest'        => true, // 是否在古腾堡编辑器和REST API中启用
    );

    register_post_type('product', $args); // 注册,'product'为内部标识符
}
add_action('init', 'create_product_post_type'); // 在初始化时执行函数

โค้ดนี้ทำงานผ่านregister_post_type()ฟังก์ชันนี้ลงทะเบียนประเภทโพสต์ชื่อproductและกำหนดค่าป้ายกำกับการแสดงผล ฟังก์ชันพื้นฐาน และโมดูลที่รองรับ หลังจากเพิ่มลงในfunctions.phpแล้ว รีเฟรชแอดมินเพื่อดูเมนู “จัดการผลิตภัณฑ์” ที่เพิ่มเข้ามาใหม่

โฮสติ้งแบบแชร์ของ InterServer
共享主机每月 $2.50 USD , 首月 $0.1 USD 优惠码 tryinterserver, 461个云应用脚本,一键安装。

การกำหนดค่าขั้นสูงและการปรับเทมเพลต

การลงทะเบียนประเภทพื้นฐานเป็นเพียงขั้นตอนแรก เพื่อให้ประเภทบทความที่กำหนดเองมีประสิทธิภาพและใช้งานง่ายจริง ๆ จำเป็นต้องมีการกำหนดค่าขั้นสูงและสร้างเทมเพลตเฉพาะสำหรับมัน

การกำหนดค่าพารามิเตอร์พิเศษและการเชื่อมโยงกับหมวดหมู่

register_post_type()ฟังก์ชั่น$argsอาร์เรย์พารามิเตอร์มีรายการการกำหนดค่าหลายสิบรายการ ตัวเลือกขั้นสูงที่สำคัญบางส่วนรวมถึง:
* ‘publicly_queryable’: สามารถเข้าถึงบทความเดี่ยวผ่าน URL ด้านหน้าได้หรือไม่
* ‘exclude_from_search’: ไม่รวมบทความประเภทนี้จากผลการค้นหาในเว็บไซต์
* ‘capability_type’: กำหนดความสามารถสิทธิ์สำหรับประเภทนี้ เพื่อให้สามารถควบคุมสิทธิ์ได้อย่างละเอียด
* ‘taxonomies’: เชื่อมโยงกับหมวดหมู่ที่มีอยู่หรือกำหนดเอง ตัวอย่างเช่น สำหรับ “ผลิตภัณฑ์” สามารถเชื่อมโยงกับ “หมวดหมู่ผลิตภัณฑ์” ที่กำหนดเอง”product_catและแท็กproduct_tagสามารถจัดหมวดหมู่ผลิตภัณฑ์ได้เหมือนกับการจัดการหมวดหมู่บทความ

สร้างหมวดหมู่ที่กำหนดเอง

ใช้ register_taxonomy() ฟังก์ชันสามารถสร้างหมวดหมู่หรือแท็กเฉพาะสำหรับประเภทบทความที่กำหนดเองของคุณได้ ตัวอย่างเช่น สร้างหมวดหมู่ “ซีรีส์ผลิตภัณฑ์” สำหรับ “ผลิตภัณฑ์”:

function create_product_taxonomy() {
    register_taxonomy(
        'product_series', // 分类法标识符
        'product', // 绑定的文章类型
        array(
            'label' => '产品系列',
            'rewrite' => array('slug' => 'product-series'),
            'hierarchical' => true, // 是否为层级式(类似分类)
            'show_in_rest' => true,
        )
    );
}
add_action('init', 'create_product_taxonomy');

พัฒนาไฟล์เทมเพลตเฉพาะ

การปรับแต่งเทมเพลตเป็นหัวใจหลักของการแสดงผลส่วนหน้า ตามลำดับชั้นเทมเพลตของ WordPress คุณจำเป็นต้องสร้างไฟล์เทมเพลตที่สอดคล้องกันสำหรับธีม ตัวอย่างเช่น:
1. 归档页模板:创建archive-product.phpกำหนดเองyoursite.com/products/หน้านี้ใช้สำหรับแสดงรายการผลิตภัณฑ์ทั้งหมด
2. 单篇文章模板:创建single-product.phpกำหนดเองสำหรับหน้าลายละเอียดผลิตภัณฑ์แต่ละรายการ เช่นyoursite.com/products/sample-product/
3. 分类法归档模板:创建taxonomy-product_series.phpเพื่อแสดงรายการผลิตภัณฑ์ทั้งหมดภายใต้ชุดผลิตภัณฑ์เฉพาะ

ในไฟล์แม่แบบเหล่านี้ คุณสามารถใช้ลูปมาตรฐานของ WordPress ได้ แต่โดยปกติจะต้องใช้ร่วมกับการสืบค้นฟิลด์แบบกำหนดเองเพื่อแสดงข้อมูลเฉพาะของผลิตภัณฑ์ เช่น ราคา ข้อมูลจำเพาะ

ใช้ pre_get_posts เพื่อปรับเปลี่ยนการสืบค้นหลัก

บางครั้งคุณอาจจำเป็นต้องปรับเปลี่ยนพารามิเตอร์การค้นหาเริ่มต้นในหน้าจัดเก็บผลิตภัณฑ์ เช่น การแก้ไขจำนวนรายการที่แสดงต่อหน้า หรือวิธีการจัดเรียง ในกรณีนี้ไม่ควรแก้ไขการค้นหาโดยตรงในไฟล์เทมเพลต แต่ควรใช้ pre_get_posts Action Hook นี้เพื่อปรับเปลี่ยนการค้นหาหลัก ซึ่งถือเป็นแนวทางปฏิบัติที่ดีที่สุดในการพัฒนา WordPress

function modify_product_archive_query($query) {
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('product')) {
        $query->set('posts_per_page', 12); // 每页显示12个产品
        $query->set('orderby', 'date'); // 按日期排序
        $query->set('order', 'DESC'); // 降序排列
    }
}
add_action('pre_get_posts', 'modify_product_archive_query');

สรุป

ประเภทโพสต์ที่กำหนดเองเป็นหนึ่งในฟังก์ชันหลักที่ทำให้ WordPress พัฒนาจากระบบบล็อกไปเป็นระบบจัดการเนื้อหาที่ทรงพลัง มันให้วิธีแก้ปัญหาที่สวยงามสำหรับการจัดการและการแสดงผลเนื้อหาที่ซับซ้อนผ่านการแยกส่วนตามตรรกะ การกำหนดฟิลด์เอง และการกำหนดเทมเพลตเฉพาะ ไม่ว่าจะผ่านปลั๊กอินสำหรับการตั้งค่าอย่างรวดเร็ว หรือผ่านregister_post_type()ฟังก์ชันสำหรับควบคุมด้วยโค้ดอย่างลึกซึ้ง นักพัฒนาสามารถหาเส้นทางที่เหมาะสมกับความต้องการของโครงการได้ เมื่อผสานกับหมวดหมู่ที่กำหนดเอง ฟิลด์ขั้นสูง และการพัฒนาธีมที่ยึดตามลำดับชั้นของเทมเพลต คุณสามารถสร้างเว็บไซต์ประเภทต่างๆ ที่มีความชัดเจนในโครงสร้าง มีประสิทธิภาพ และมีประสบการณ์ผู้ใช้ที่ยอดเยี่ยม การเรียนรู้และใช้ประโยชน์จากฟังก์ชันนี้อย่างชำนาญ เป็นเส้นทางที่จำเป็นสำหรับนักพัฒนา WordPress ทุกคนในการก้าวไปสู่ระดับที่สูงขึ้น

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

ข้อมูลประเภทบทความที่กำหนดเองจะถูกเก็บไว้ที่ไหนในฐานข้อมูล?

บทความทั้งหมด (เนื้อหา) ของประเภทบทความที่กำหนดเองจะถูกเก็บไว้ในตารางwp_postsข้อมูลเป็นหลัก โดยค่าในฟิลด์post_typeคือตัวระบุที่คุณกำหนดไว้เมื่อลงทะเบียน (เช่นproduct)。ข้อมูลเกี่ยวกับการจำแนกประเภทที่เกี่ยวข้องกับบทความเหล่านี้จะถูกจัดเก็บไว้ในwp_term_relationshipswp_term_taxonomyตาราง ในขณะที่ข้อมูลที่เพิ่มผ่านฟิลด์ที่กำหนดเอง (เมตาดาต้า) จะถูกจัดเก็บไว้ในwp_postmetaตารางข้อมูล

หากฉันปิดการใช้งานปลั๊กอินที่สร้างประเภทบทความที่กำหนดเอง เนื้อหาจะหายไปหรือไม่?

เนื้อหาของบทความมักจะไม่สูญหาย เนื่องจากถูกจัดเก็บไว้ในwp_postsตารางแล้ว อย่างไรก็ตาม เนื่องจากโค้ดที่ลงทะเบียนประเภทบทความนั้น (ซึ่งมีให้โดยปลั๊กอิน) ไม่ทำงานอีกต่อไป WordPress จะไม่รู้จักประเภทนี้อีกต่อไป ส่งผลให้เมนูจัดการหลังบ้านหายไป คุณจะไม่สามารถดูและจัดการเนื้อหาเหล่านี้ในหลังบ้านได้ และลิงก์บทความด้านหน้าอาจไม่สามารถเข้าถึงได้ตามปกติ เพื่อป้องกันสถานการณ์นี้ ขอแนะนำให้ย้ายโค้ดลงทะเบียนที่สำคัญไปยังธีมลูกfunctions.phpหรือปลั๊กอินฟังก์ชันที่กำหนดเอง

จะแก้ไขโครงสร้างลิงก์ถาวรของประเภทโพสต์แบบกำหนดเองที่มีอยู่ได้อย่างไร

การแก้ไขโครงสร้างลิงก์ถาวร (Permalink) จำเป็นต้องอัปเดตการลงทะเบียนในrewriteพารามิเตอร์ คุณสามารถแก้ไขสิ่งที่คุณได้ลงทะเบียนไว้เมื่อแรกเริ่มregister_post_type()ฟังก์ชัน‘rewrite’ => array(‘slug’ => ‘new-slug’)บางส่วน หลังจากแก้ไขแล้ว คุณต้องเข้าสู่หน้า “การตั้งค่า” -> “ลิงก์ถาวร” ในแอดมิน WordPress โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ เพียงคลิกปุ่ม “บันทึกการเปลี่ยนแปลง” การดำเนินการนี้จะรีเฟรชกฎการเขียนใหม่เพื่อให้โครงสร้างลิงก์ใหม่มีผล

สามารถสร้างเทมเพลตตัวแก้ไขบล็อกแยกต่างหากสำหรับประเภทโพสต์ที่กำหนดเองได้หรือไม่?

ใช่ แน่นอน ตั้งแต่ WordPress 5.0 ได้แนะนำตัวแก้ไข Gutenberg และรองรับการแก้ไขทั้งเว็บไซต์ (FSE) คุณสามารถสร้างเทมเพลตบล็อกหรือชิ้นส่วนเทมเพลตเฉพาะสำหรับประเภทโพสต์ที่กำหนดเองได้ ซึ่งมักจะใช้งานได้ง่ายกว่าเมื่อใช้ธีมบล็อกที่รองรับ FSE (เช่น Twenty Twenty-Three) คุณสามารถสร้างไฟล์เทมเพลตบล็อกเช่นtemplatesภายใต้โฟลเดอร์single-product.htmlของธีม หรือผ่านไฟล์theme.jsonของธีมและพารามิเตอร์การลงทะเบียน‘template’‘template_lock’ตัวเลือกการกำหนดค่าสำหรับการกำหนดเค้าโครงบล็อกที่สม่ำเสมอสำหรับบทความประเภทนี้ทั้งหมด