เพิ่มฟิลด์ในหมวด / อนุกรมวิธาน WordPress

เมื่อเร็ว ๆ นี้ฉันจำเป็นต้องเก็บข้อมูลเมตาบางพิเศษในแต่ละหมวดหมู่ / taxonomy ที่กำหนดเองใน WordPress โดยทั่วไปฉันเพียงต้องการเพิ่มเขตพิเศษ การค้นหาเบ็ดด้านขวาและการสร้างปลั๊กอิน meta ประเภทง่ายๆเป็นเรื่องง่าย เราไม่ได้เพิ่มหมวดหมู่ใหม่จำนวนมาก แต่ส่วนใหญ่เราจำเป็นต้องเก็บข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลที่มีอยู่แล้วดังนั้นฉันจึงติดตั้งในรูปแบบการแก้ไข

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

 add_action ( 'category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('revised_category', 'taxonomy_meta_form'); 

การดำเนินการครั้งแรกในรูปแบบการจัดหมวดหมู่ / แบบอนุกรมวิธาน จะแสดงฟอร์มที่เราสร้างขึ้นและออกจากฟังก์ชันที่เรียกว่า taxonomy_meta_form_fields การกระทำที่สองเรียก taxonomy_meta_form เมื่อฟอร์มหมวดหมู่ถูกแก้ไขจริง

รหัสเต็ม

 add_action ( 'category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('revised_category', 'taxonomy_meta_form'); ฟังก์ชั่น taxonomy_meta_form () {if (! current_user_can ('manage_options')) // ตรวจสอบให้แน่ใจว่าผู้ใช้มีสิทธิ์ที่เหมาะสม if ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // ตรวจสอบให้แน่ใจว่าไม่มีอะไรเป็นอันตราย $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // อัพเดตค่าสำหรับ update_option ID ของหมวดหมู่นี้ ('extra_taxonomy_titles', $ extra_titles); // เก็บอาร์เรย์, WP จัดการกับการทำให้เป็นอันดับ)} function taxonomy_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?> 

มองเข้าไปใน Custom Taxonomies

 add_action ( 'TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_TAXONOMYNAME', 'taxonomy_meta_form'); 

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

การแสดงข้อมูล

เพื่อดึงข้อมูลที่จัดเก็บไว้สำหรับเราในส่วนหน้าผมขอแนะนำให้สร้างฟังก์ชันง่ายๆสำหรับเก็บในไฟล์ functions.php ของธีม:

 ฟังก์ชั่น tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ extra_title = $ extra_titles [$ id]; return $ extra_title; } 

จากนั้นอาจเรียกได้จากหน้าเทมเพลตดังนี้:

 $ extra_title = tj_extra_title ($ category-> term_id); // แทนที่ id ด้วยตัวแปรใดก็ตามที่เหมาะสมสำหรับบริบทของคุณ echo $ extra_title; 

ดูโค้ดบน github ถามคำถามด้านล่าง

ดูเพิ่มเติมที่