Obter Lista de Meta-Caixas Registradas e Removê-las

8

Existe uma função para obter uma lista de Meta Boxes registradas e removê-las? Eu vejo que há um método para adicionar e remover.

enlace

enlace

    
por Michael Ecklund 21.06.2012 / 21:39

2 respostas

7

Não realmente, mas você pode definir o seu próprio. Todas as caixas meta são armazenadas na variável global $wp_meta_boxes , que é uma matriz multidimensional.

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];          
}

Esta matriz mostrará todas as caixas meta registradas para uma tela específica e um contexto específico. Você também pode detalhar ainda mais, porque essa matriz também é uma matriz multidimensional que separa caixas meta por prioridade e id.

Então, digamos que você queira obter uma matriz que contenha todas as caixas meta com prioridade "normal" no Painel do administrador. Você chamaria o seguinte:

$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );

Isso é idêntico ao array global $wp_meta_boxes['dashboard']['normal'] e também é um array multidimensional.

Removendo as caixas meta do núcleo

Digamos que você queira remover um monte de caixas meta. A função acima pode ser ajustada levemente para que:

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

Se você quisesse remover, digamos, o widget de links de entrada do Painel, ligaria para:

remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
    
por EAMann 21.06.2012 / 22:42
0

No Painel do WordPress, há caixas meta exibidas. Há uma coluna normal e uma coluna lateral.

Eu posso obter uma lista de caixas meta registradas e removê-las do painel usando o seguinte código:

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

Use apenas print_r($wp_meta_boxes); para ver uma lista de caixas meta registradas.

    
por Michael Ecklund 26.06.2012 / 22:42