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


15

ฉันมี taxonomies แบบกำหนดเองสองระดับซึ่งแต่ละชนิดมีประเภทโพสต์ที่กำหนดเองที่เกี่ยวข้อง ฉันต้องการลบ metabox สำหรับแต่ละรายการในหน้าจอแก้ไขของโพสต์ประเภท

ฉันได้อ่านลบ taxonomy แบบกำหนดเองแบบฟอร์ม metabox โพสต์ที่กำหนดเองและคุณจะลบรูปแบบ taxonomy ประเภทประเภท (ลำดับชั้น) ได้อย่างไร แต่ฉันยังคงติดอยู่

ฟังก์ชั่นที่ฉันใช้คือ:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

ฉันไม่ได้โพสต์ post_types และ custom_taxonomies แต่ไม่เป็นไร ฉันลองใช้admin_menuตะขอและadd_meta_boxesตะขอที่ Codex แนะนำ ฉันลองทั้งสองnormalและsideสำหรับพารามิเตอร์ที่สาม

ฟังก์ชั่นด้านบนตั้งอยู่ในmu-pluginsไฟล์ด้านล่างฟังก์ชั่นที่ลงทะเบียนประเภทโพสต์และ taxonomies


แก้ไข: มันเป็นความผิดพลาดในฟังก์ชั่น register_taxonomy ฉันเป็นคนที่น่ากลัว ขอบคุณสำหรับทุกคนสำหรับความช่วยเหลือ ฉันยังได้เรียนรู้บางสิ่ง!


แม้จะด้วย'show_ui' => false?
JMau

1
ฉันต้องการให้ UI ในเมนูยังคงอยู่ไม่ใช่แค่เมื่อแก้ไขโพสต์
mrwweb

คำตอบ:


35

หากคุณกำลังลงทะเบียน taxonomy แบบกำหนดเองของคุณเองผ่านregister_taxonomyคุณสามารถส่งอาร์กิวเมนต์เพื่อควบคุมว่าจะให้ Metabox ปรากฏขึ้นที่ใด

ในตัวอย่างด้านล่างการตั้งค่าshow_uiเป็นfalseจะลบ metabox ออกจากหน้าจอแก้ไขหน้าจอแก้ไขอย่างรวดเร็วและเมนูผู้ดูแลระบบ แต่ถ้าคุณตั้งค่าshow_uiเพื่อtrueคุณสามารถบรรลุการควบคุมที่เหมาะสมยิ่งขึ้นจากนั้นใช้show_in_quick_editและmeta_box_cbข้อโต้แย้ง (การตั้งค่าในภายหลังเพื่อซ่อนเท็จ metabox บนหน้าจอ CPT แก้ไขได้ตามที่ต้องการ)

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);

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

ขอขอบคุณ! ฉันกำลังมองหา 'meta_box_cb' => false เพื่อซ่อนไว้ในโพสต์ใหม่ที่การตั้งค่าเป็นโมฆะเพียงแค่แสดงรุ่น wordpress เริ่มต้น
Ryan H

เรียบและเรียบง่าย
เทรวิสแวนเดอร์แบบอักษร

7

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

register_taxonomy( 'genre', array( 'book' ), $args );

ฉันคิดว่านี่เป็นสิ่งที่คุณต้องทำ แต่คุณไม่ได้โพสต์รหัสลงทะเบียนใด ๆ สำหรับประเภทโพสต์หรือ taxonomies

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

do_action('add_meta_boxes_' . $post_type, $post);

หรือทำตามตัวอย่างด้านบน:

add_action('add_meta_boxes_book', 'your-box-callback');

หนึ่งในวิธีการเหล่านั้นควรแก้ปัญหานี้ให้คุณ ฉันไม่คิดว่าคุณควรจะใช้remove_meta_boxเลย

หากคุณพยายามลบเมตาบ็อกซ์จากประเภทโพสต์ที่ลงทะเบียนไว้จะใช้งานได้ (ทำตามตัวอย่างใน Codex อีกครั้ง):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

ฉันค่อนข้างแน่ใจว่าadmin_menuเร็วเกินไป แต่ไม่ได้ตรวจสอบ add_metaboxesใช้ได้กับฉันด้วย ฉันไม่รู้ว่าทำไมมันไม่ทำงานสำหรับคุณ


ขออภัยที่ไม่ชัดเจน ฉันหมายถึงหน้าจอโพสต์ประเภท taxonomy แต่ละครั้งจะถูกลงทะเบียนกับประเภทโพสต์ที่กำหนดเองหนึ่งประเภทเท่านั้น ฉันพยายามใช้ add_meta_boxes_ * ขอสั้น ๆ แต่ฉันจะลองใช้รูปแบบที่หลากหลาย (แม้ว่าฉันจะใช้ metaboxes ที่สร้างขึ้นโดยอัตโนมัติ)
mrwweb

จากนั้นตัวเลือกสุดท้ายในคำตอบควรทำ ฉันทดสอบแล้ว กล่องหายไป ฉันไม่สามารถพูดได้ว่าฉันเข้าใจตรรกะของการมี taxonomies โดยไม่ต้องมีกล่อง
s_ha_dum

(ดูการแก้ไขด้านบนมันเป็นตัวพิมพ์ผิดนั่นคือฉัน ... ขอบคุณสำหรับความช่วยเหลือ) เพื่อตอบคำถามของคุณฉันกำลังแสดง taxonomies ด้วยฟิลด์ที่กำหนดเองขั้นสูง (เป็นอินเทอร์เฟซที่ดีกว่าสำหรับผู้ใช้ของไซต์)
mrwweb

ตัวอย่างสุดท้ายของคุณทำให้ฉันไปในทิศทางที่ถูกต้อง แต่นี่คือสิ่งที่ใช้ได้กับฉัน: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque

ฉันพบว่ารูปแบบนี้ใช้งานไม่ได้กับ WordPress เวอร์ชันปัจจุบันตรวจสอบคำตอบสำหรับวิธีแก้ปัญหาที่ใช้งานได้
ดาวี่

3

การใช้ ACF สำหรับการจัดการ taxonomies ที่กำหนดเอง metaboxes เริ่มต้นนั้นไม่จำเป็น ฉันได้ลองรหัสนี้สำเร็จแล้ว:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

ลำดับความสำคัญต่ำกว่า (100) ปล่อยให้โค้ดนี้ทำงานเช่นกันหากการสร้าง taxonomies ถูกสร้างโดยปลั๊กอินเช่น CPT-UI


tagsdiv ควรมีการติดตาม -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.