Xóa Metabox phân loại tùy chỉnh khỏi màn hình loại bài tùy chỉnh


15

Tôi có hai nguyên tắc phân loại tùy chỉnh phân cấp, mỗi loại trên một loại bài tùy chỉnh tương ứng. Tôi muốn xóa metabox cho từng loại trên màn hình chỉnh sửa của bài đăng.

Tôi đã đọc loại bỏ metabox tùy chỉnh phân loại biểu mẫu tùy chỉnh loại bài đăngLàm thế nào để bạn loại bỏ một metabox phân loại theo kiểu phân cấp (phân cấp)? nhưng tôi vẫn bị mắc kẹt.

Chức năng tôi đang sử dụng là:

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' );

Tôi đã không chuẩn bị các post_types và custom_taxonomies, nhưng đó là nó. Tôi đã thử sử dụng admin_menuhook và add_meta_boxeshook được Codex khuyên dùng. Tôi đã thử cả hai normalsidecho tham số thứ ba.

Hàm trên nằm trong một mu-pluginstệp bên dưới hàm đăng ký các loại bài và phân loại.


EDIT: Đó là một lỗi đánh máy trong hàm register_taxonomy. Tôi là một người kinh khủng. Cảm ơn mọi người đã giúp đỡ. Tôi vẫn học được vài thứ!


thậm chí với 'show_ui' => false?
JMau

1
Tôi muốn giao diện người dùng trong menu vẫn còn, chỉ khi không chỉnh sửa bài đăng.
mrwweb

Câu trả lời:


35

Nếu bạn đang đăng ký thủ công phân loại tùy chỉnh của mình thông qua register_taxonomy thì bạn có thể chuyển qua các đối số để kiểm soát nơi metabox xuất hiện.

Trong ví dụ dưới đây thiết lập show_uiđể falsehoàn toàn sẽ loại bỏ các Metabox từ màn hình chỉnh sửa, chỉnh sửa màn hình nhanh chóng, và menu admin. Nhưng nếu bạn đặt show_uithành truebạn có thể đạt được điều khiển nhiều sắc thái hơn bằng cách sử dụng các đối số show_in_quick_editmeta_box_cb(đặt cài đặt sau thành sai sẽ ẩn metabox trên màn hình chỉnh sửa CPT như mong muốn).

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,
);

Nó hoạt động. giữ menu quản trị và xóa phân loại tùy chỉnh dưới dạng thêm mới của loại bài tùy chỉnh. Cảm ơn.
Vlog CNTT

Cảm ơn bạn! Tôi đã tìm kiếm 'meta_box_cb' => false để ẩn nó trong post-new, trong đó đặt nó thành null chỉ hiển thị phiên bản wordpress mặc định.
Ryan H

Nhẹ nhàng và đơn giản.
Travis van der Font

6

Bạn nói rằng bạn muốn xóa các hộp khỏi postmàn hình chỉnh sửa, không phải màn hình loại Bài đăng, vì vậy, giả sử rằng bạn chỉ có thể đăng ký phân loại của mình cho các loại bài đăng mà bạn muốn áp dụng và tránh hoàn toàn việc này. Ví dụ trong Codex đăng ký phân loại mẫu chỉ dành cho bookloại bài đăng như:

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

Tôi nghĩ rằng đây là những gì bạn cần làm, nhưng bạn đã không đăng bất kỳ mã đăng ký nào cho các loại bài đăng hoặc các nguyên tắc phân loại.

Nếu bạn đã tự tạo các hộp meta-- nghĩa là, các hộp này không phải là hộp mặc định-- thì cách để tránh vấn đề này là đăng ký các hộp meta trên các móc cụ thể sau loại :

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

Hoặc để làm theo ví dụ trên:

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

Một trong những cách tiếp cận sẽ giải quyết điều này cho bạn. Tôi không nghĩ bạn nên sử dụng remove_meta_boxtất cả.

Nếu bạn đang cố xóa các hộp meta khỏi loại bài đăng mà chúng được đăng ký, thì điều này sẽ hoạt động (một lần nữa theo ví dụ trong Codex):

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

Tôi khá chắc chắn rằng đó admin_menulà quá sớm, nhưng đã không xác minh điều đó. add_metaboxescũng làm việc cho tôi Tôi không biết tại sao nó không làm việc cho bạn.


Xin lỗi vì không rõ ràng. Tôi có nghĩa là màn hình loại bài . Mỗi phân loại chỉ được đăng ký cho một loại bài tùy chỉnh. Tôi đã thử sử dụng hook_meta_boxes_ * hook đó một cách nhanh chóng nhưng tôi sẽ thử một số biến thể trên đó (mặc dù tôi đang sử dụng metaboxes được tạo tự động).
mrwweb

Sau đó, tùy chọn cuối cùng trong câu trả lời nên làm điều đó. Tôi đã thử nó. Cái hộp sẽ biến mất. Tôi không thể nói rằng tôi hiểu logic của việc có các nguyên tắc phân loại mà không có các hộp.
s_ha_dum

(Xem chỉnh sửa ở trên. Đó là một lỗi đánh máy. Đó là tôi ... Cảm ơn vì sự giúp đỡ). Để trả lời câu hỏi của bạn, tôi đang hiển thị các nguyên tắc phân loại với Trường tùy chỉnh nâng cao (đó là giao diện tốt hơn cho người dùng trang web).
mrwweb

Ví dụ cuối cùng của bạn đã đưa tôi đi đúng hướng, nhưng đây là điều làm việc cho tôi: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque

Tôi thấy cú pháp này không hoạt động với phiên bản hiện tại của WordPress, hãy kiểm tra câu trả lời này để biết giải pháp hoạt động.
Davey

3

Sử dụng ACF để quản lý phân loại tùy chỉnh, các metabox mặc định là không cần thiết. Tôi đã thử, thành công, mã này:

      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 );

Mức độ ưu tiên thấp hơn (100) cũng để mã này hoạt động nếu các nguyên tắc phân loại được tạo bởi một plugin như CPT-UI.


tagsdiv nên có dấu vết -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.