Como remover certas opções de tela e caixas Meta de adicionar / editar o tipo de postagem?

10

Agora, quando você adiciona ou edita uma postagem específica no tipo de postagem desejado, também há mais opções de tela. Embora, essas opções de tela estejam mostrando / ocultando caixas meta. Eu gostaria de ser capaz de obter uma lista de todas essas Opções de Tela de caixas meta registradas, para que eu possa verificar novamente se uma determinada matriz de Opções de Tela existe, e se isso acontecer, planejo removê-las programaticamente.

Clique aqui para Captura de tamanho total

Pergunta Como posso obter programaticamente uma lista de todas as opções de tela registradas (caixas meta) nos tipos de postagem, onde você deseja adicionar ou editar uma postagem específica no tipo de postagem desejado.

Por fim, o objetivo aqui é remover essas opções e não simplesmente desativá-las. Eu estou olhando para fazer algo ao longo das linhas do que tenho feito para remover as caixas meta do dashboard desnecessárias .

    
por Michael Ecklund 26.06.2012 / 22:47

2 respostas

13

O que você precisa é no global $wp_meta_boxes indexado por get_current_screen()->id . Remover as opções de tela também removerá os metaboxes que você pode fazer antes que as opções de tela sejam exibidas usando o gancho 'in_admin_header' .

Então, vamos supor que você quer se livrar da opção de tela "Enviar Trackbacks" , que você vê nesta captura de tela:

Solteaseguinteclassenoarquivofunctions.phpdoseutemaouemumplug-inquevocêestejacriandoeocódigoremoveráaopçãodetela"Send Trackbacks" (e seu metabox associado, que também é o que você queria, certo?):

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

E aqui está o que parece depois de adicionar o código acima em um site do WordPress 3.4:

Usaro depurador do Zend dentro do PhpStorm aqui é a inspeção de $wp_meta_boxes[get_current_screen()->id] para que você possa ver quais valores uma instalação padrão do WordPress 3.4 tem na tela Publicar edição (circulei os índices de matriz que referenciei no meu exemplo, por exemplo, $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] :

Espero que seja isso o que você estava procurando?

    
por MikeSchinkel 27.06.2012 / 04:36
0

Lamentamos, mas acho que é útil quando se trata de remover caixas meta wp out of box, mas não tanto para caixas meta personalizadas ou customizadas relacionadas ao tema. Para ilustrar um pouco mais: instalei um novo tema que introduzia uma meta box customizada sempre que você cria um post / página que aparece nas opções de tela. (Eu sou novo em wp so) Por alguma razão, usando a abordagem de Mike, não consegui remover essa meta box personalizada, mas ela funcionou para tudo que não é personalizado. Para a minha estupidez eu continuei batendo na parede por horas ainda não conseguia descobrir, então eu tive que voltar a isso:

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;
    
por Yinnie 11.11.2012 / 03:01