วิธีสร้างอนุกรมวิธานแบบกำหนดเองพิเศษบน WordPress

เผยแพร่แล้ว: 2022-03-11

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

ไม่เหมือนกับ CMS อื่น ๆ มากมาย WordPress เป็นที่ชื่นชอบของหลาย ๆ คนเนื่องจากความยืดหยุ่นและความสามารถในการปรับแต่งได้ Taxonomies หนึ่งในคุณสมบัติหลักของ WordPress ช่วยให้คุณจัดระเบียบเนื้อหาในแบบที่คุณต้องการ แม้ว่าจะมาพร้อมกับอนุกรมวิธานเริ่มต้นสองสามรายการในตัว แต่ WordPress ให้คุณเพิ่มอนุกรมวิธานที่กำหนดเองได้มากเท่าที่คุณต้องการ

อย่างไรก็ตาม การจัดอนุกรมวิธานให้มีพฤติกรรมตรงตามที่คุณต้องการอาจทำให้คุณต้องใช้วิธีการที่ไม่มีเอกสาร

การแสดงกราฟิกของตัวเลือกอนุกรมวิธาน WordPress ต่างๆ

ในบทความนี้ คุณจะได้เรียนรู้วิธีกำหนดอนุกรมวิธานแบบกำหนดเองใน WordPress ที่มีลักษณะเหมือนหมวดหมู่มากกว่าแท็ก ช่วยให้คุณจัดหมวดหมู่บทความของคุณอย่างเคร่งครัดมากกว่าที่คุณสามารถทำได้

อนุกรมวิธานคืออะไร?

ตาม codex ของ WordPress:

อนุกรมวิธานเป็นวิธีจัดกลุ่มสิ่งต่างๆ เข้าด้วยกัน

ตัวอย่างเช่น พวงของผลไม้ประเภทต่างๆ สามารถจัดกลุ่มเข้าด้วยกันตามลักษณะต่างๆ และจากนั้นก็สามารถตั้งชื่อกลุ่มเหล่านั้นได้

ใน WordPress การจัดหมวดหมู่จะใช้เพื่อจัดกลุ่มโพสต์ เพจ และแม้แต่ประเภทโพสต์ที่กำหนดเองภายใต้กลุ่มต่างๆ

ชื่อสำหรับการจัดกลุ่มต่างๆ ในอนุกรมวิธานเรียกว่า เงื่อนไข ยกตัวอย่างผลไม้ และวิธีจัดกลุ่มผลไม้ตามสี ในกรณีนี้ ชื่อของสีที่ต่างกันจะเป็นเงื่อนไข

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

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

นอกจากนี้ หมวดหมู่มักจะถูกกำหนดไว้ล่วงหน้า ในขณะที่แท็กอาจถูกกำหนดเมื่อคุณใช้งาน

การกำหนดอนุกรมวิธานแบบกำหนดเอง

คุณสามารถกำหนดอนุกรมวิธานที่กำหนดเองได้โดยใช้ฟังก์ชัน register_taxonomy() คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันได้ที่นี่

หากต้องการดูว่าฟังก์ชันนี้ทำงานอย่างไร ให้เรากำหนดอนุกรมวิธานที่กำหนดเองสำหรับโพสต์ที่มีรูปถ่ายทิวทัศน์

 function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );

ในตัวอย่างข้างต้น เรากำลังกำหนดอนุกรมวิธานใหม่สำหรับโพสต์ที่เรียกว่า view

คุณอาจคิดว่าอนุกรมวิธานนี้ใช้เพื่อจัดหมวดหมู่ภาพถ่ายตามประเภทหรือลักษณะของมุมมองที่มีอยู่ในภาพถ่าย (เช่น ภูเขา ทะเลสาบ หรือป่า)

เช่นเคย โพสต์ที่เป็นของข้อกำหนดเฉพาะของหมวดหมู่นี้จะปรากฏภายใต้ /view/{view_name}

รายการความสามารถในตัวอย่างด้านบนเป็นทางเลือก หากไม่มี WordPress จะใช้ความสามารถเริ่มต้นกับผู้ใช้รายเดียวกันกับโพสต์ ดังที่แสดงไว้ด้านบน การดำเนินการนี้จะอนุญาตให้ผู้ใช้ที่มีความสามารถ "edit_guides" ที่กำหนดเองสามารถกำหนดอนุกรมวิธานให้กับโพสต์ และผู้ใช้ที่มีความสามารถ "publish_guides" แบบกำหนดเองเพื่อสร้างรายการการจัดหมวดหมู่ใหม่

ตามเอกสารอย่างเป็นทางการ มีความสามารถสี่ประการที่สามารถกำหนดได้:

ความสามารถด้านอนุกรมวิธาน ได้แก่ assignterms , editterms , manageterms (แสดงอนุกรมวิธานในการนำทางของผู้ดูแลระบบ) และ deleteterms

วิธีการใช้อนุกรมวิธาน

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

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

บังคับเอกสิทธิ์ในอนุกรมวิธาน

เมื่อเราสร้างอนุกรมวิธานแบบกำหนดเองด้วยเมธอด register_taxonomy() WordPress จะเพิ่มเมตาบ็อกซ์ที่มีการเลือกหลายรายการในหน้าแก้ไขโพสต์:

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

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

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

มาดูแต่ละขั้นตอนกัน

ซ่อนกล่อง Meta เริ่มต้นที่สร้างโดย WordPress

สำหรับสิ่งนี้ เราจำเป็นต้องตั้งค่าตัวเลือก show_in_quick_edit และ meta_box_cb false เมื่อเรียกใช้ register_taxonomy

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

ตัวเลือกแรกซ่อนการจัดหมวดหมู่ในแผงแก้ไขด่วน/จำนวนมาก และตัวเลือกที่สองซ่อนไว้ในหน้าแก้ไขโพสต์:

 register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

เมื่อเมตาบ็อกซ์เริ่มต้นถูกซ่อน คุณสามารถเพิ่มรายการไปยังชุดของเงื่อนไขที่มีอยู่ของการจัดหมวดหมู่ได้ผ่านหน้าการจัดการอนุกรมวิธาน:

สกรีนช็อตของกล่องเมตาที่ชื่อ Custom Exclusive Taxonomy พร้อมปุ่มตัวเลือกหลายปุ่ม

สร้างกล่อง Meta แบบกำหนดเองบนหน้าแก้ไขโพสต์

ในการสร้างเมตาบ็อกซ์ที่กำหนดเอง เราสามารถใช้ add_meta_boxes WordPress hook คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเบ็ดได้ที่นี่

 add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); }

เราเรียกเมธอด add_meta_box ด้วยอาร์กิวเมนต์ต่อไปนี้:

  • taxonomy_box – ID ของเมตาบ็อกซ์
  • __('Custom Exclusive Taxonomy') – ชื่อของเมตาบ็อกซ์
  • fill_custom_meta_box_content – ​​ฟังก์ชันที่ใช้เติมเนื้อหาของเมตาบ็อกซ์
  • post – สิ่งนี้บ่งชี้ว่ากล่องเมตาควรปรากฏบนหน้าแก้ไขโพสต์
  • side – ระบุตำแหน่งที่ควรแทรกกล่องเมตา

สังเกตว่าเราระบุ taxonomy_box เป็น ID อย่างไร อย่างไรก็ตาม เป็นฟังก์ชันในพารามิเตอร์ที่สามที่จะให้เรากำหนดสิ่งที่จะเข้าไปในกล่อง

ตอนนี้เราจะใช้ฟังก์ชัน fill_custom_meta_box_content :

 <?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }

ในที่นี้ อันดับแรก เราจะเรียกค้นเงื่อนไขทั้งหมด (เช่น ค่าที่มีอยู่) ของอนุกรมวิธาน เราจะใช้สิ่งเหล่านี้เพื่อแสดงรายการการควบคุมปุ่มตัวเลือก

ต่อไป เราเรียกคำศัพท์อนุกรมวิธานที่เลือกไว้ในปัจจุบันโดยใช้ get_the_terms() —เราจำเป็นต้องใช้คำสั่งดังกล่าวเพื่อเลือกปุ่มตัวเลือกตามลำดับ

ขอให้สังเกตว่าฟังก์ชันนี้ส่งคืนอาร์เรย์ ทั้งนี้เพราะโดยค่าเริ่มต้น โพสต์สามารถมีเงื่อนไขใดๆ ที่เกี่ยวข้องกับโพสต์ได้ ตามสมมติฐานของเรา โพสต์มีไม่เกินหนึ่งเทอม ดังนั้นเราจึงเข้าถึงองค์ประกอบอาร์เรย์แรก (ไม่เป็นไรถ้าอาร์เรย์ว่างเปล่า เราจะได้ null เป็นค่าปัจจุบันและจะไม่มีการเลือกปุ่มตัวเลือก)

รหัสการเปล่ง HTML ใช้ custom_taxonomy เป็นชื่อของปุ่มตัวเลือกและรหัสคำที่เกี่ยวข้องเป็นค่า แอตทริบิวต์รหัสปุ่มตัวเลือกใช้สำหรับเชื่อมต่อกับแท็กป้ายกำกับ เป็นผลให้เราได้รับเมตาบ็อกซ์ที่กำหนดเองต่อไปนี้:

สกรีนช็อตของฟีเจอร์ "เพิ่มแท็กใหม่" ของ Custom Exclusive Taxonomy พร้อมใช้งานแล้วบนแถบด้านข้างของแดชบอร์ด WordPress

บันทึกค่าอนุกรมวิธานเมื่อโพสต์ถูกบันทึก

สุดท้าย เราต้องคงค่าอนุกรมวิธานไว้เมื่อโพสต์ถูกบันทึก สำหรับสิ่งนี้ เราสามารถใช้ save_post hook:

 add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }

และนั่นแหล่ะ! เราเสร็จแล้ว

ตอนนี้คุณทราบวิธีกำหนดอนุกรมวิธานแบบกำหนดเองซึ่งจะทำงานเหมือนอนุกรมวิธานหมวดหมู่ที่มีอยู่แล้วภายใน

หมายเหตุ: WordPress ได้ยอมรับคำขอคุณลักษณะเพื่อให้ง่ายต่อการสลับการผูกขาดสำหรับการจัดหมวดหมู่แบบกำหนดเอง อย่างไรก็ตาม ตั๋วยังไม่ค่อยเห็นกิจกรรมมากนักในช่วงระยะเวลาหนึ่ง

สรุป

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

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

ฉันหวังว่าคุณจะพบบทช่วยสอนสั้นๆ นี้เกี่ยวกับการกำหนดอนุกรมวิธานแบบกำหนดเองที่มีประโยชน์!