สร้าง WordPress Custom Post Types ด้วยตนเอง

เผยแพร่แล้ว: 2020-12-15

ในบทความแรกของเราเกี่ยวกับประเภทโพสต์ที่กำหนดเองของ WordPress เราได้ศึกษาวิธีที่คุณสามารถสร้างประเภทโพสต์ที่กำหนดเองได้อย่างง่ายดายโดยใช้ปลั๊กอิน UI ของประเภทโพสต์ที่กำหนดเองที่ยอดเยี่ยม ในบทความที่สองนี้ เราจะมาดูวิธีการดำเนินการด้วยตนเอง (เช่น โดยการเข้ารหัส) เหตุใดหากการสร้างประเภทโพสต์ที่กำหนดเองนั้นง่ายมากโดยใช้ปลั๊กอิน คุณอยากจะทำเช่นนี้ไปอีกนานไหม

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

ดังนั้น หากคุณสามารถเขียนโค้ดในฟังก์ชันการทำงานได้โดยตรง แทนที่จะใช้ปลั๊กอิน ก็ถือเป็นตัวเลือกที่ดีในการพิจารณา

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

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

หากคุณติดตามบทช่วยสอนก่อนหน้านี้และยังคงติดตั้งปลั๊กอิน CPT UI อยู่ โปรดปิดใช้งานเพื่อไม่ให้เกิดความสับสนเมื่อสร้าง CPT ใหม่ด้วยตนเอง

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

การตั้งค่าพื้นฐาน

สำหรับตอนนี้ เราจะสร้างประเภทโพสต์ของเราโดยมีข้อโต้แย้งน้อยที่สุดโดยใช้ฟังก์ชัน register_post_type ที่ WordPress มีให้

 register_post_type( string $post_type, array|string $args = array() )

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

สำหรับวัตถุประสงค์ของบทความนี้ เราจะใช้รหัสด้านล่าง

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

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

คุณจะเห็นในโค้ดนี้ เราใช้อาร์เรย์ 'labels' เพื่อกำหนดชื่อเอกพจน์และพหูพจน์สำหรับประเภทโพสต์ของเรา อาร์กิวเมนต์ show_in_rest เพื่อเปิดใช้งานตัวแก้ไข Gutenberg สำหรับการโพสต์สูตรอาหาร ตลอดจนอาร์กิวเมนต์ public

การโต้เถียงในที่ public จริงๆ แล้วทำสามสิ่งที่แตกต่างกัน มันแสดงเมนูโพสต์ที่กำหนดเองของผู้ดูแลระบบ รวมถึงเมนูโพสต์ที่กำหนดเองในผลลัพธ์ของการค้นหาเว็บไซต์ และยังแสดงเมนูโพสต์ที่กำหนดเองในพื้นที่เมนูผู้ดูแลระบบ WordPress ตัวเลือกเหล่านี้สามารถแก้ไขแยกกันได้โดยใช้ show_in_nav_menus , exclude_from_search และ show_ui ตามลำดับ ค่าดีฟอลต์ show_in_nav_menus และ show_ui สืบทอดค่า public แต่ค่าดีฟอลต์ exclude_from_search ตรงกันข้ามกับค่า public

เรายังใช้อาร์กิวเมนต์ supports ซึ่งกำหนดคุณสมบัติที่โพสต์ที่กำหนดเองจะรองรับ สำหรับตอนนี้ เราจะเปิดใช้งานเฉพาะ 'ชื่อ', 'ตัวแก้ไข' และ 'ภาพขนาดย่อ' (ตัวเลือกเพิ่มเติมบางส่วนจะแสดงในบทความต่อๆ ไป)

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

ต่อไป หากเราไปที่ ลักษณะที่ปรากฏ > เมนู เราสามารถยืนยันได้ว่าได้เพิ่มสูตรอาหารเป็นตัวเลือกแล้ว สิ่งนี้เป็นการยืนยันว่าสิ่งต่าง ๆ ทำงานตามที่ควรจะเป็น

หมายเหตุ: หากคุณไปที่พื้นที่เมนูและไม่เห็นรายการเมนู 'สูตรอาหาร' เป็นไปได้ว่าไม่มีการตรวจสอบในตัวเลือกหน้าจอ ในการดำเนินการนี้ ให้ไปที่ด้านบนสุดของหน้าและเปิดแถบตัวเลือกหน้าจอ และตรวจสอบให้แน่ใจว่าได้เลือกประเภทโพสต์ที่กำหนดเองใหม่ของคุณ (สูตรในตัวอย่างนี้) แล้ว

เพิ่มอนุกรมวิธานของคุณสำหรับประเภทโพสต์ที่กำหนดเองของคุณ

มีการจัดหมวดหมู่ของ WordPress เพื่อจัดกลุ่มเนื้อหาที่คล้ายคลึงกัน ณ จุดนี้ เรามี 'สูตรอาหาร' โพสต์ที่กำหนดเอง แต่เราไม่สามารถจัดหมวดหมู่ได้ตามที่เราต้องการ ดังนั้น การสร้างหมวดหมู่แยกต่างหากสำหรับสูตรอาหารของเราจึงจะเป็นประโยชน์ ยกตัวอย่างสูตรอาหารกลุ่มตามประเภทของอาหารที่พวกเขาเป็นเจ้าของ

เพื่อให้บรรลุสิ่งนี้ เราจำเป็นต้องลงทะเบียนอนุกรมวิธาน 'อาหาร' ใหม่ จากนั้นเชื่อมโยงไปยังประเภทโพสต์ 'สูตรอาหาร'

ในการเพิ่มอนุกรมวิธาน เราใช้ฟังก์ชัน register_taxonomy() ที่ WordPress มีให้ (ดูรายการอาร์กิวเมนต์ที่นี่)

 register_taxonomy( string $taxonomy, $object_type, $args )

อาร์กิวเมนต์บังคับคือ $taxonomy ซึ่งเป็นคีย์อนุกรมวิธาน และ $object_type ซึ่งเป็นประเภทออบเจกต์หรืออาร์เรย์ของประเภทอ็อบเจ็กต์ที่อนุกรมวิธานควรเชื่อมโยง ในกรณีของเราคือ 'สูตร' ในพารามิเตอร์ $arg เราจะรวมค่าที่จำเป็นสำหรับการติดป้ายกำกับอินสแตนซ์ผู้ดูแลระบบของอนุกรมวิธานของเราด้วย

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

บูลีน show_admin_column กำหนดว่าอนุกรมวิธานจะปรากฏเป็นคอลัมน์ในตารางรายการผู้ดูแลระบบสูตรหรือไม่

ตอนนี้ หากคุณกลับไปที่ผู้ดูแลระบบ WordPress และรีเฟรชสิ่งนี้ คุณจะเห็นอนุกรมวิธาน 'อาหาร' ในเมนูสูตรอาหาร

คุณควรเห็นคอลัมน์ 'อาหาร' ในตารางสูตรอาหาร:

การแสดงเนื้อหาประเภทโพสต์ที่กำหนดเองของคุณที่ส่วนหน้า

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

หากคุณสร้างโพสต์สูตรอาหารและเชื่อมโยงกับหมวดหมู่อาหาร คุณควรเห็นโพสต์เหล่านั้นเมื่อคุณเลือกอาหารที่เกี่ยวข้องจากเมนู

หมายเหตุ: หากคุณพยายามดูโพสต์สูตรอาหารในส่วนหน้า คุณอาจได้รับ "404 ไม่พบ" สิ่งนี้สามารถเกิดขึ้นได้เนื่องจากต้องล้างแคช Permalink นี้เป็นเรื่องง่ายที่จะทำ เพียงไปที่การตั้งค่า > ลิงก์ถาวร แล้วบันทึกใหม่

ตอนนี้เราจะสร้างรายการเมนูอื่นสำหรับ 'สูตรอาหารทั้งหมด' โดยใช้รหัสที่กำหนดเองเพื่อแสดงที่เก็บสูตรอาหารทั้งหมดของเรา

ก่อนดำเนินการต่อ เราควรตรวจสอบให้แน่ใจว่าอาร์กิวเมนต์ที่เก็บถาวรของโพสต์ที่กำหนดเองถูกตั้งค่าเป็นจริง กลับไปที่โค้ดของคุณใน functions.php ซึ่งคุณลงทะเบียนประเภทสูตรและเพิ่ม 'has_archive' => true, ในอาร์เรย์อาร์กิวเมนต์

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

หลังจากนั้น ไปที่การตั้งค่า > ลิงก์ถาวร แล้วบันทึกใหม่เพื่อให้แน่ใจว่าคุณจะไม่ได้รับข้อผิดพลาด 404 (ดังที่เราได้กล่าวไว้ก่อนหน้านี้)

ตอนนี้ในหน้าการสร้างเมนู ให้เพิ่มลิงก์ที่กำหนดเองสำหรับหน้าเอกสารสำคัญ ข้อความลิงก์อาจเป็น "สูตรทั้งหมด"

URL ควรเป็น “/?post_type=recipes” หากลิงก์ถาวรของคุณตั้งค่าเป็น “ธรรมดา” และ '/recipes/' หากตั้งค่าลิงก์ถาวรเป็น “ชื่อโพสต์”

เพิ่มรายการเมนูและไปที่เว็บไซต์ของคุณแล้วคลิกลิงก์ ตอนนี้คุณควรเห็นโพสต์สูตรอาหารทั้งหมดในมุมมองที่เก็บถาวร

อ่านเพิ่มเติม

  • สร้างประเภทโพสต์ที่กำหนดเองของ WordPress โดยใช้ปลั๊กอิน
  • WordPress ประเภทโพสต์ที่กำหนดเอง – ก้าวต่อไป
  • สร้างประเภทโพสต์ที่กำหนดเองของ WordPress โดยใช้ปลั๊กอินของคุณเอง!

บทสรุป

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