Làm cách nào để loại bỏ một số tùy chọn màn hình và hộp Meta khỏi loại bài đăng thêm / chỉnh sửa?


10

Bây giờ, khi bạn thêm hoặc chỉnh sửa một bài đăng cụ thể trong loại bài đăng mong muốn của bạn, cũng có nhiều tùy chọn màn hình hơn. Mặc dù, các Tùy chọn màn hình này đang hiển thị / ẩn các hộp meta. Tôi muốn có thể lập trình một danh sách tất cả các Tùy chọn màn hình đã đăng ký này của các hộp meta, để tôi có thể kiểm tra lại xem có tồn tại một mảng Tùy chọn màn hình nào không, và nếu có, tôi dự định loại bỏ chúng theo lập trình.

WordPress - Tùy chọn màn hình - Thêm hoặc chỉnh sửa bài đăng - Meta Box Bấm vào đây để xem ảnh chụp màn hình kích thước đầy đủ

Câu hỏi Làm thế nào tôi có thể lập trình một danh sách tất cả các Tùy chọn màn hình đã đăng ký (hộp meta) trên các loại bài đăng, nơi bạn muốn thêm hoặc chỉnh sửa một bài đăng cụ thể trong loại bài đăng mong muốn của mình.

Cuối cùng, mục tiêu ở đây là loại bỏ các tùy chọn này và không chỉ đơn giản là vô hiệu hóa chúng. Tôi đang tìm cách làm một cái gì đó dọc theo những gì tôi đã hoàn thành để loại bỏ các hộp meta bảng điều khiển không cần thiết .

Câu trả lời:


13

Những gì bạn cần là trong $wp_meta_boxeschỉ mục toàn cầu get_current_screen()->id. Xóa các tùy chọn màn hình cũng sẽ loại bỏ các metabox mà bạn có thể làm ngay trước khi các tùy chọn màn hình được hiển thị bằng 'in_admin_header'móc.

Vì vậy, giả sử bạn muốn thoát khỏi tùy chọn màn hình "Gửi theo dõi" mà bạn thấy trong ảnh chụp màn hình này:

Thả lớp sau vào functions.phptệp của chủ đề hoặc trong plugin bạn có thể đang xây dựng và mã sẽ xóa tùy chọn màn hình "Gửi theo dõi" (và đó là metabox liên quan, cũng là thứ bạn muốn, phải không?):

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

Và đây là giao diện sau khi thêm đoạn mã trên vào trang web WordPress 3.4:

Sử dụng trình gỡ lỗi Zend trong PhpStorm ở đây là kiểm tra $wp_meta_boxes[get_current_screen()->id]để bạn có thể thấy giá trị cài đặt mặc định của WordPress 3.4 có trong màn hình chỉnh sửa Bài đăng (Tôi đã khoanh tròn các chỉ mục mảng mà tôi đã tham chiếu trong ví dụ của mình, ví dụ $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Hy vọng đây là những gì bạn đang tìm kiếm?


3
Đơn giản là tuyệt vời! Xin chúc mừng, Ecklund, bạn không chỉ nhận được một câu trả lời kinh điển, mà còn là một câu chuyện huyền thoại ..!
brasofilo

@brasofilo Cảm ơn lời khen. Tôi rất vinh dự.
MikeSchinkel

@MikeSchinkel Điều này hoạt động trên việc thêm / chỉnh sửa bài đăng và cảm ơn bạn vì điều đó, nhưng làm cách nào để xóa hộp meta tùy chọn màn hình cho trang có wp_list_table chứa danh sách tất cả bài đăng của bạn? Tham khảo ảnh chụp màn hình # 1.
Michael Ecklund

@MichaelEcklund Xin chào, tôi đoán tôi không nên trả lời câu hỏi khi tôi quá mệt để hiểu đầy đủ câu hỏi, eh? Câu trả lời cho câu hỏi chưa được trả lời thực sự khác biệt đáng kể so với câu hỏi tôi đã trả lời vì vậy đây thực sự là hai câu hỏi khác nhau. Bạn cảm thấy thế nào về việc chỉnh sửa câu hỏi này để hỏi những gì tôi đã trả lời, và sau đó thêm một câu hỏi khác như hỏi những gì tôi đã không làm? Nếu bạn có thể làm điều đó và gửi một liên kết đến nó ở đây trong các bình luận để tôi sẽ tìm thấy nó tôi sẽ đăng một câu trả lời chi tiết tương đương cho câu hỏi đó. Nếu không, nó có thể trở nên phức tạp để viết một câu trả lời mạch lạc cho cả hai.
MikeSchinkel

1
@MichaelEcklund Thật tuyệt, cảm ơn. Đã trả lời: wordpress.stackexchange.com/a/56896/89
MikeSchinkel

0

Xin lỗi, đây là một bài hát phụ nhưng tôi thấy nó rất hữu ích khi loại bỏ wp ra khỏi hộp meta nhưng không quá nhiều cho các hộp meta liên quan đến chủ đề tùy chỉnh hoặc tùy chỉnh. Để minh họa thêm một chút: Tôi đã cài đặt một chủ đề mới giới thiệu hộp meta tùy chỉnh bất cứ khi nào bạn đăng bài / trang mới, nó sẽ hiển thị trong các tùy chọn màn hình. (Tôi mới sử dụng wp vì vậy) Vì một số lý do sử dụng phương pháp của Mike, tôi không thể xóa hộp meta tùy chỉnh này nhưng nó hoạt động cho mọi thứ không tùy chỉnh. Vì sự ngu ngốc của tôi, tôi đã liên tục đập vào tường trong nhiều giờ mà vẫn không thể hiểu được nên tôi phải quay lại vấn đề này:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
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.