Có chức năng nào để nhận danh sách Meta Box đã đăng ký và xóa chúng không? Tôi thấy có một phương pháp để thêm và xóa.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Có chức năng nào để nhận danh sách Meta Box đã đăng ký và xóa chúng không? Tôi thấy có một phương pháp để thêm và xóa.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Câu trả lời:
Không thực sự, nhưng bạn có thể xác định của riêng bạn. Tất cả các hộp meta được lưu trữ trong biến toàn cục $wp_meta_boxes
là một mảng đa chiều.
function get_meta_boxes( $screen = null, $context = 'advanced' ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
return $wp_meta_boxes[$page][$context];
}
Mảng này sẽ hiển thị tất cả các hộp meta được đăng ký cho một màn hình cụ thể và bối cảnh cụ thể. Bạn cũng có thể đi sâu hơn nữa vì mảng này cũng là một mảng nhiều chiều, phân tách các hộp meta theo mức độ ưu tiên và id.
Vì vậy, giả sử bạn muốn có một mảng chứa tất cả các hộp meta có mức độ ưu tiên "bình thường" trên Bảng điều khiển quản trị viên. Bạn sẽ gọi như sau:
$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );
Điều này giống hệt với mảng toàn cầu$wp_meta_boxes['dashboard']['normal']
và nó cũng là một mảng đa chiều.
Giả sử bạn muốn xóa một loạt các hộp meta. Chức năng trên có thể được điều chỉnh một chút để tận dụng rằng:
function remove_meta_boxes( $screen = null, $context = 'advanced', $priority = 'default', $id ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
unset( $wp_meta_boxes[$page][$context][$priority][$id] );
}
Nếu bạn muốn xóa, giả sử, tiện ích liên kết đến từ Bảng điều khiển, bạn sẽ gọi:
remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
global
này không hiệu quả với tôi! Cảm ơn. wordpress.stackexchange.com/questions/318834/ Cách
Trên Bảng điều khiển WordPress, có các hộp meta được hiển thị. Có một cột bình thường, và một cột bên.
Tôi có thể lấy danh sách các hộp meta đã đăng ký và xóa chúng khỏi bảng điều khiển bằng cách sử dụng mã sau đây:
// Remove some non-sense meta boxes
function remove_dashboard_meta_boxes(){
global $wp_meta_boxes;
// Dashboard core widgets :: Left Column
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
// Additional dashboard core widgets :: Right Column
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
// Remove the welcome panel
update_user_meta(get_current_user_id(), 'show_welcome_panel', false);
}
add_action('wp_dashboard_setup', 'remove_dashboard_meta_boxes');
Chỉ cần sử dụng print_r($wp_meta_boxes);
để xem danh sách các hộp meta đã đăng ký.
print_r($wp_meta_boxes);