Como remover certas opções de tela e colunas de tabela do tipo de postagem em wp_list_table?

3

Na página em que listamos todas as postagens feitas: example.domain.com/wp-admin/edit.php

Há uma guia Opções de tela no canto superior direito. Ao clicar nisso, um menu desliza para baixo. Contidos neste menu deslizante, são caixas de seleção. Ao marcar ou desmarcar essas caixas de seleção, determinadas colunas na tabela de postagem serão mostradas / ocultadas, dependendo de estarem marcadas ou não.

Estou procurando uma maneira de obter, por meio de programação, uma lista de todas essas opções de tela registradas para esse tipo de postagem (tipo de postagem padrão: postagem). Depois de obter uma lista dessas opções de tela registradas, verificarei se uma determinada matriz de opções está listada. Se eles corresponderem a um item listado, planejo remover essas opções.

Clique aqui para Captura de tamanho total

Pergunta Como posso obter, por programação, uma lista de todas as opções de tela registradas nos tipos de postagens (página com a tabela listando cada post)?

Procurando uma solução semelhante à solução fornecida para remover certas opções de tela e caixas de meta de adicionar / editar o tipo de postagem .

    
por Michael Ecklund 28.06.2012 / 06:02

1 resposta

9

O que você precisa é modificar a variável $columns que é usada durante a exibição de lista, que você pode modificar usando os ganchos 'manage_posts_columns' e 'manage_pages_columns' para post_type='post' e post_type='page' , respectivamente. Se você quiser ignorar os tipos de postagem personalizados, poderá inspecionar o segundo parâmetro passado para 'manage_posts_columns' , como fiz no meu exemplo para mostrar como.

Então, vamos supor que você queira se livrar da opção de tela "Comentários" e da coluna associada que você vê nesta captura de tela para Postagens e Páginas, respectivamente:

Solte a seguinte classe no arquivo functions.php do seu tema ou em um plug-in que você esteja criando e esse código removerá a opção de tela "Comentários" e sua coluna associada A resposta é semelhante à sua outra pergunta , adicionei um "2" ao nome da classe, portanto, em Michael_Ecklunds_Admin_Customizer2 ):

class Michael_Ecklunds_Admin_Customizer2 {
  function __construct() {
    add_action( 'manage_pages_columns', array( $this, 'manage_columns' ) );
    add_action( 'manage_posts_columns', array( $this, 'manage_columns' ), 10, 2 );
  }
  function manage_columns( $columns, $post_type = 'page' ) { //2nd param not passed for pages
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
      // This is only for posts and pages, 'if (in_array(...))' just illustrates how.
      unset( $columns['comments'] );
    }
    return $columns;
  }
}
new Michael_Ecklunds_Admin_Customizer2();

E aqui está o que parece depois que você adicionou o código acima em um site do WordPress 3.4:

Usar o depurador do Zend dentro do PhpStorm aqui é a inspeção de $columns dentro do gancho 'manage_posts_columns' , para que você possa ver quais valores uma instalação padrão do WordPress 3.4 tem para a lista Publicar postagem (circulei os índices de matriz que referenciei no meu exemplo, ou seja, $columns['comments'] :

Espero que seja isso o que você estava procurando?

    
por MikeSchinkel 29.06.2012 / 04:46