คำอธิบายโดยละเอียดเกี่ยวกับ WordPress ประเภทบทความที่กำหนดเอง
WordPress ชนิดบทความมาตรฐานpostและชนิดหน้าpageเพียงพอสำหรับการจัดการเนื้อหาส่วนใหญ่ แต่สำหรับเว็บไซต์ที่ซับซ้อนซึ่งต้องการแสดงเนื้อหาเฉพาะอย่างมีโครงสร้าง (เช่น ผลิตภัณฑ์ ผลงาน โครงการ กิจกรรม ทีมงาน ฯลฯ) ฟังก์ชันการทำงานของมันก็ดูจะไม่เพียงพอ การเกิดขึ้นของชนิดบทความที่กำหนดเองนั้น เพื่อแก้ไขปัญหาหลักนี้โดยเฉพาะ มันอนุญาตให้นักพัฒนาก้าวข้ามขอบเขตของ “บทความ” และ “หน้า” เพื่อสร้างระบบจัดการหลังบ้าน การแสดงผลด้านหน้า และตรรกะการสืบค้นเฉพาะสำหรับเนื้อหาประเภทใดก็ได้
ด้วยชนิดบทความที่กำหนดเอง คุณสามารถเพิ่มอินเทอร์เฟซการเผยแพร่แยกต่างหากสำหรับ “ผลิตภัณฑ์” สร้างฟิลด์ป้อนข้อมูลเฉพาะสำหรับ “สมาชิกทีม” และกำหนดโครงสร้าง URL วิธีการจัดหมวดหมู่ และไฟล์เทมเพลตที่เป็นเอกลักษณ์ให้กับเนื้อหาเหล่านี้ สิ่งนี้ไม่เพียงแต่เพิ่มความชัดเจนและประสิทธิภาพในการจัดการเนื้อหาอย่างมาก แต่ยังเป็นรากฐานทางเทคนิคที่ขาดไม่ได้สำหรับการสร้างเว็บไซต์ WordPress ระดับองค์กรที่มีการปรับแต่งสูง
ทำไมจึงต้องกำหนดประเภทบทความเอง
การใช้ประเภทบทความที่กำหนดเอง สามารถแยกเนื้อหาประเภทต่างๆ ทางตรรกะได้ ซึ่งนำมาซึ่งข้อได้เปรียบที่สำคัญหลายประการ
แนะนำให้อ่าน การวิเคราะห์เชิงลึกของ WooCommerce: คู่มือฉบับสมบูรณ์ในการสร้างเว็บไซต์อีคอมเมิร์ซที่มีประสิทธิภาพตั้งแต่เริ่มต้น。
ทำให้การจัดการเนื้อหาแยกออกจากกันอย่างชัดเจน
เมื่อเว็บไซต์ของคุณมีทั้งบล็อก การแสดงผลิตภัณฑ์ ข่าวประกาศ และกรณีศึกษาที่สำเร็จ หากใช้ “บทความ” เริ่มต้นทั้งหมดในการจัดการ หลังบ้านจะกลายเป็นความสับสนวุ่นวาย เนื้อหาที่มีลักษณะแตกต่างกันปะปนอยู่ในรายการเดียวกัน การแก้ไขและการค้นหาล้วนไม่สะดวกอย่างยิ่ง
หลังจากสร้างประเภท “ผลิตภัณฑ์” และ “เคส” แยกกัน ผู้ดูแลระบบจะเห็นเมนู “ผลิตภัณฑ์” และ “เคส” แยกกันในเมนูด้านซ้ายของแอดมิน เมื่อคลิกเข้าไป อินเทอร์เฟซการจัดการจะคล้ายกับหน้าจอการจัดการบทความ แต่แยกจากกันโดยสมบูรณ์และไม่รบกวนซึ่งกันและกัน การแยกประเภทนี้ทำให้การจัดระเบียบเนื้อหาเป็นระเบียบและลดความซับซ้อนในการจัดการอย่างมาก
กำหนดฟิลด์และเมตาดาต้าเฉพาะ
ประเภทบทความเริ่มต้นส่วนใหญ่ประกอบด้วยฟิลด์ทั่วไป เช่น หัวข้อ, เนื้อหา, บทคัดย่อ, หมวดหมู่ และแท็ก สำหรับ “ผลิตภัณฑ์” คุณอาจต้องการฟิลด์ เช่น ราคา, รายละเอียดสเปค, สต็อก สำหรับ “กิจกรรม” จำเป็นต้องมีเวลาเริ่มต้น, เวลาสิ้นสุด, สถานที่ เป็นต้น
ประเภทบทความที่กำหนดเองสามารถผสานรวมกับปลั๊กอินหรือโค้ด เช่น Advanced Custom Fields เพื่อเพิ่มฟิลด์เมตาดาต้าสำหรับประเภทเนื้อหาเฉพาะได้อย่างง่ายดาย ฟิลด์เหล่านี้จะปรากฏในรูปแบบฟอร์มในแอดมิน และสามารถเรียกใช้อย่างยืดหยุ่นผ่านแท็กเทมเพลตในส่วนหน้า ซึ่งช่วยให้สามารถปรับแต่งโครงสร้างเนื้อหาได้อย่างลึกซึ้ง
สร้างโครงสร้าง URL และระบบเทมเพลตแยกอิสระ
ประเภทบทความที่กำหนดเองสามารถกำหนด URL แทน (Slug) ของตัวเองได้ เช่น คุณสามารถตั้งค่าลิงก์ถาวรสำหรับประเภทผลิตภัณฑ์เป็น/product/%postname%และตั้งค่าลิงก์ถาวรสำหรับกิจกรรมเป็น/event/%postname%ซึ่งไม่เพียงทำให้ URL มีความหมายและเป็นมิตรกับ SEO มากขึ้น แต่ยังช่วยให้ผู้ใช้เข้าใจโครงสร้างเว็บไซต์ได้ง่ายขึ้น
แนะนำให้อ่าน เรียนรู้เทมเพลตหน้า WooCommerce แบบกำหนดเอง: คู่มือการพัฒนาเชิงปฏิบัติตั้งแต่พื้นฐานจนถึงขั้นสูง。
ที่สำคัญกว่านั้น ระบบลำดับชั้นเทมเพลตของ WordPress จะค้นหาไฟล์เทมเพลตที่ตรงกับประเภทโพสต์ที่กำหนดเองเป็นอันดับแรก ตัวอย่างเช่น สำหรับประเภทที่ชื่อว่าproductระบบจะค้นหาตามลำดับเช่นsingle-product.php、single.php、singular.phpเป็นต้น ซึ่งช่วยให้คุณสามารถออกแบบสไตล์การแสดงผลส่วนหน้า (front-end) ที่แตกต่างกันอย่างสิ้นเชิงสำหรับเนื้อหาประเภทต่างๆ โดยไม่ต้องเขียนตรรกะการตรวจสอบเงื่อนไขที่ซับซ้อนในเทมเพลตเดียว
สองวิธีในการสร้างประเภทโพสต์ที่กำหนดเอง
ใน WordPress มีสองวิธีหลักในการสร้างประเภทโพสต์ที่กำหนดเอง: การลงทะเบียนผ่านโค้ดในไฟล์ฟังก์ชันของธีม และการใช้ปลั๊กอินเฉพาะทางที่มีประสิทธิภาพ
ใช้ปลั๊กอินเพื่อสร้างอย่างรวดเร็ว
สำหรับผู้ใช้ที่ไม่คุ้นเคยกับการพัฒนาด้วยโค้ดหรือต้องการใช้งานอย่างรวดเร็ว การใช้ปลั๊กอินเป็นวิธีที่สะดวกที่สุด Custom Post Type UI และ Toolset Types เป็นสองปลั๊กอินที่ได้รับความนิยมอย่างกว้างขวาง พวกเขามีส่วนติดต่อผู้ใช้ที่ใช้งานง่าย ช่วยให้คุณกำหนดพารามิเตอร์ทั้งหมดของประเภทโพสต์ เช่น ชื่อ ป้ายกำกับ ไอคอน การเปิดเผยต่อสาธารณะ การรองรับหน้าอาร์ไคฟ์ ผ่านการกรอกฟอร์ม
ข้อดีของวิธีนี้คือไม่ต้องเขียนโค้ด การตั้งค่ามีผลทันที และมักจะรวมเข้ากับฟังก์ชันการจัดการฟิลด์เมตาของปลั๊กอินได้ดี อย่างไรก็ตาม ข้อเสียก็เห็นได้ชัดเช่นกัน: ฟังก์ชันถูกจำกัดด้วยตัวเลือกที่ปลั๊กอินให้มา ระดับการปรับแต่งอาจไม่เพียงพอ และหากเปลี่ยนธีมหรือปิดใช้งานปลั๊กอินในอนาคต แม้ว่าข้อมูลจะยังคงอยู่ในฐานข้อมูล แต่ฟังก์ชันการลงทะเบียนอาจสูญหายไป จำเป็นต้องมีโค้ดเพิ่มเติมเพื่อประกาศใหม่
การลงทะเบียนผ่านฟังก์ชันโค้ด (แนะนำ)
สำหรับนักพัฒนาที่มุ่งเน้นความเสถียร การควบคุมได้ และประสิทธิภาพ การลงทะเบียนผ่านโค้ดในธีมหรือปลั๊กอินที่กำหนดเองเป็นวิธีที่มืออาชีพกว่าและแนะนำมากกว่า หลักการสำคัญของวิธีนี้คือการใช้ 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แล้ว รีเฟรชแอดมินเพื่อดูเมนู “จัดการผลิตภัณฑ์” ที่เพิ่มเข้ามาใหม่
การกำหนดค่าขั้นสูงและการปรับเทมเพลต
การลงทะเบียนประเภทพื้นฐานเป็นเพียงขั้นตอนแรก เพื่อให้ประเภทบทความที่กำหนดเองมีประสิทธิภาพและใช้งานง่ายจริง ๆ จำเป็นต้องมีการกำหนดค่าขั้นสูงและสร้างเทมเพลตเฉพาะสำหรับมัน
การกำหนดค่าพารามิเตอร์พิเศษและการเชื่อมโยงกับหมวดหมู่
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_relationships和wp_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’ตัวเลือกการกำหนดค่าสำหรับการกำหนดเค้าโครงบล็อกที่สม่ำเสมอสำหรับบทความประเภทนี้ทั้งหมด
ขั้นต่อไป ฉันควรทำอย่างไรต่อไป
อ่านเพิ่มเติมและรับความรู้ที่มีประโยชน์
下面这些内容与本文主题相关,适合继续深入阅读。优先从与你当前问题最接近的文章开始看,再逐步扩展到周边主题,效果通常会更好。
- คู่มือฉบับสมบูรณ์สำหรับเทมเพลตหน้า WooCommerce ที่กำหนดเอง
- กลยุทธ์หลักในการปรับแต่ง SEO: คู่มือปฏิบัติการตั้งแต่พื้นฐานจนถึงขั้นสูง
- เชี่ยวชาญ SEO Optimization: คู่มือปฏิบัติจริงจากพื้นฐานสู่ระดับสูงและกลยุทธ์หลัก
- คู่มือปฏิบัติจริงสำหรับการปรับแต่ง SEO บน Google: กลยุทธ์หลักตั้งแต่เริ่มต้นจนถึงเชี่ยวชาญ
- คู่มือฉบับสมบูรณ์: กลยุทธ์และเทคนิคการปฏิบัติ SEO ตั้งแต่เริ่มต้น