Ocultar todos os Widgets do Painel (não remover)

Existe um para ocultar todos os widgets do painel, não removê-los? Eu quero que meu widget seja o primeiro widget, mas de acordo com os documentos, não há como especificar onde o seu widget aparece, pois é todo o “núcleo”, então minha solução seria esconder todos os widgets inicialmente. Eu corri contra isso, mas isso só esconde o widget de boas-vindas, tentei duplicar o esconderijo do widget de boas-vindas, mas não funcionou (nada aconteceu):

function remove_dashboard_widgets() { global $wp_meta_boxes; //unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); //unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); //unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); update_user_meta( get_current_user_id(), 'show_welcome_panel', false ); update_user_meta( get_current_user_id(), 'dashboard_right_now', false ); update_user_meta( get_current_user_id(), 'dashboard_quick_press', false ); //remove_meta_box( 'dashboard_activity', 'dashboard', 'normal'); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets' ); 

Solutions Collecting From Web of "Ocultar todos os Widgets do Painel (não remover)"

Em primeiro lugar, eu tenho que dizer que depois de uma rápida investigação parece que não há 'dashboard_right_now' ou 'dashboard_quick_press' usermeta … então, configurá-lo como falso, como no seu código, não pode fazer nada.

Dito isto

De acordo com os documentos, não há como especificar onde o seu widget aparece

Docs mentira.

Quando um usuário sair e depois fazer o login novamente, todos os widgets ficam na mesma posição e ordem e, uma vez que não há magia, essas informações devem ser salvas em algum lugar.

As coisas do lado do cliente não são uma possibilidade, porque, mesmo que um usuário faça login em um PC diferente, a posição do widgets não muda … então a posição e a ordem devem me salvar no database.

Após uma pesquisa rápida, parece que existem 2 opções diferentes que controlam os widgets dos painéis posision:

  • meta-box-order_dashboard
  • metaboxhidden_dashboard

O primeiro é um array onde as chaves são:

‘normal’ , ‘lado’ , ‘coluna3’ e ‘coluna4’ .

Desde o WP 3.8, dashoard tem 4 colunas por padrão 1 , e cada uma dessas chaves se refere a uma coluna, o primeiro é chamado de “normal” e o segundo “lado” , eu acho, para compatibilidade com versões anteriores.

Cada chave contém uma seqüência separada por vírgulas dos identificadores de widgets que são mostrados nessa coluna, então, se você quiser forçar seu widget a ser o único widget na primeira coluna, você deve fazer 'normal' coluna 'normal' contendo apenas o ID do widget, e mova todos os outros widgets para outra coluna, algo assim:

 function order_dashboard_widgets() { $uid = get_current_user_id(); // hide welcome panel update_user_meta( $uid, 'show_welcome_panel', '0' ); // add your widget wp_add_dashboard_widget( 'unsocial_widget', 'Antisocial Dashboard Widget', function() { echo '

I like to be the alone!

'; } ); $order = (array) get_user_meta( $uid, 'meta-box-order_dashboard', true ); if ( ! isset( $order['normal'] ) ) $order['normal'] = ''; if ( $order['normal'] !== 'unsocial_widget' ) { $normal = explode( ',', $order['normal'] ); $unsocial_key = array_search( 'unsocial_widget', $normal, true ); if ( $unsocial_key !== false ) { unset( $normal[$unsocial_key] ); } $order['side'] = implode( ',', $normal ) . ',' . $order['side']; $order['normal'] = 'unsocial_widget'; // yours is the only widget in 1st column update_user_meta( $uid, 'meta-box-order_dashboard', $order ); } } add_action( 'wp_dashboard_setup', 'order_dashboard_widgets' );

Desta forma, seu widget será sempre o primeiro e único widget na primeira coluna.

Agora, para responder a sua pergunta, sim, também é possível ocultar todos os outros widgets usando o meta do usuário 'metaboxhidden_dashboard' : ele contém uma série de IDs de widgets que devem ser ocultos, para que você possa preenchê-lo com todos os widgets do painel.

 function remove_dashboard_widgets() { // add your widget wp_add_dashboard_widget( 'unsocial_widget', 'Antisocial Dashboard Widget', function() { echo '

I like to be the alone!

'; } ); $uid = get_current_user_id(); // hide welcome panel update_user_meta( $uid, 'show_welcome_panel', '0' ); // get the current hidden metaboxes $hidden = get_user_meta( $uid, 'metaboxhidden_dashboard' ); // the metaboxes to be hidden $to_hide = array( 'dashboard_right_now', 'dashboard_activity', 'dashboard_quick_press', 'dashboard_primary' ); // if not already hidden, hide if ( $hidden !== $to_hide ) { update_user_meta( $uid, 'metaboxhidden_dashboard', $to_hide ); } } add_action( 'wp_dashboard_setup', 'remove_dashboard_widgets' );

No entanto, desta forma, os usuários não poderão mais ocultar, mostrar ou mover widgets, porque em cada login eles estão novamente escondidos (mas o seu, fora de curso …), essa é a razão pela qual eu prefiro a solução anterior. …

Talvez, se você quiser ocultar todos os outros widgets, você pode fazê-lo apenas uma vez que um usuário visita o painel e, em todas as visitas subseqüentes, apenas peça os widgets usando a function anterior. (Você pode salvar um meta do usuário na primeira visita para saber se a atual já visitou o painel de controle).

Nota: Claro, qualquer outro plugin pode usar o mesmo código, então você nunca pode ter certeza absoluta de que o seu é o primeiro widget … depois que toda essa resposta é pública agora;)


1 Usando algumas linhas de código é possível ter novamente a possibilidade de usar um número personalizado de colunas, mas mesmo nesse caso, a matriz permanece a mesma: se você permitir menos de 4 colunas, as teclas adicionais não serão excluídas.