วิธีแก้ไข Taxonomy ที่ลงทะเบียนไว้แล้ว


18

วันนี้ผมต้องเปลี่ยนข้อโต้แย้งในอนุกรมวิธานที่กำหนดเองที่ได้รับการจดทะเบียนแล้วโดยที่ปลั๊กอินของบุคคลที่สาม โดยเฉพาะฉันต้องการตั้งค่าการshow_admin_columnโต้แย้งtrueและเปลี่ยนrewriteกระสุนเพื่อให้มันไม่ได้เป็นเพียงบุ้งอนุกรมวิธาน ในกรณีนี้มันเป็นประเภทโพสต์ "คน" ที่มีอนุกรมวิธานที่กำหนดเอง "ประเภทคน"

ฉันประหลาดใจที่ไม่ได้ถามมาก่อนดังนั้นนี่เป็นคำถามและคำตอบ


เพียงบันทึกด้านข้างสำหรับทุกคนที่ติดขัดอย่าลืมล้างลิงก์ถาวรก่อนตรวจสอบผลลัพธ์
un.pez.vivo

คำตอบ:


22

register_taxonomy()เป็นเครื่องมือสำหรับงาน จาก Codex:

ฟังก์ชั่นนี้จะเพิ่มหรือเขียนทับอนุกรมวิธาน

ทางเลือกหนึ่งคือการคัดลอกregister_taxonomy() $argsและแก้ไข อย่างไรก็ตามนั่นหมายความว่าการเปลี่ยนแปลงregister_taxonomy()รหัสต้นฉบับในอนาคตจะถูกเขียนทับ

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

การใช้peopleประเภทโพสต์ที่กำหนดเองและpeople_categoryอนุกรมวิธานจากตัวอย่างนี้จะทำ:

function wpse_modify_taxonomy() {
    // get the arguments of the already-registered taxonomy
    $people_category_args = get_taxonomy( 'people_category' ); // returns an object

    // make changes to the args
    // in this example there are three changes
    // again, note that it's an object
    $people_category_args->show_admin_column = true;
    $people_category_args->rewrite['slug'] = 'people';
    $people_category_args->rewrite['with_front'] = false;

    // re-register the taxonomy
    register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );

โปรดสังเกตว่าฉันพิมพ์register_taxonomy()อาร์กิวเมนต์ที่สามเป็นประเภทอาเรย์ที่คาดไว้ นี้ไม่จำเป็นอย่างเคร่งครัดregister_taxonomy()การใช้งานwp_parse_args()ที่สามารถจัดการได้หรือobject arrayที่กล่าวว่าregister_taxonomy()'s $argsควรจะถูกส่งเป็นarrayไปตาม Codex ดังนั้นนี้รู้สึกขวาให้ฉัน


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

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

1
Genius! อัจฉริยะบริสุทธิ์! ทำงานอย่างสมบูรณ์แบบ!
DaveyJake

1
ฉันพบปัญหาเกี่ยวกับวิธีแก้ปัญหานี้: capabilitiesพารามิเตอร์ถูกเก็บไว้ภายในcapเพื่อไม่ให้ถูกส่งไปยังอนุกรมวิธานที่ลงทะเบียนใหม่ ดูคำตอบของฉันสำหรับคำถามที่คล้ายกันที่นี่
Fabien Quatravaux

1
มันยอดเยี่ยมมากฉันใช้มันเพื่อเพิ่ม URL แบบลำดับขั้นให้กับอนุกรมวิธานที่กำหนดเอง
Brian Peat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.