TablePress: tabelas responsivas com Bootstrap

TablePress: tabelas responsivas com Bootstrap

  • Last modified: 5 de agosto de 2024
  • Reading time: 15 mins

Com a retomada do HTML semântico depois da primeira guerra dos navegadores, a tag <table> foi demonizada. Vi  desenvolvedores experientes colocando dados tabulares em divs por achar que a tag <table> não deveria ser usada nunca mais. Hoje em dia essa má fase passou, quem está chegando no mercado não fez nenhum site em tabelas e estamos livres de preconceitos. O único problema das tabelas HTML atualmente é seu código extenso: é preciso abrir linha, abrir célula, fechar tudo, bem pouco trivial para quem não mexe com código. Para facilitar a administração de tabelas no WordPress existe o excelente plugin TablePress. Ele traz uma interface intuitiva, é possível adicionar linhas e colunas com facilidade, mesclar células, uma beleza.

Se você está usando Bootstrap no seu tema e deseja que todas as tabelas sejam responsivas, já deve ter percebido que é preciso envolver todas elas em uma div com classe table-responsive. Como não podemos alterar o código do plugin sem perdermos as modificações em uma próxima atualização é preciso recorrer a algum hook do WordPress, no caso o filtro tablepress_table_output. No código abaixo criamos uma função que recebe três argumentos, mas só nos importa o primeiro, que é o código todo da tabela:

PHP
 function seu_tema_tablepress_table_output( $output, $table, $render_options ) {
	return '<div class="table-responsive">' . $output . '</div>';
}
add_filter( 'tablepress_table_output', 'seu_tema_tablepress_table_output', 10, 3 ); 

O TablePress permite que você inclua classes personalizadas em cada tabela, mas para adicionar a classe table de modo automático em todas as tabelas basta usar o filtro tablepress_table_tag_attributes, como no código a seguir:

PHP
 function seu_tema_tablepress_table_tag_attributes( $table_attributes, $table, $render_options ) {
	$table_attributes['class'] .= ' table';
	return $table_attributes;
}
add_filter( 'tablepress_table_tag_attributes', 'seu_tema_tablepress_table_tag_attributes', 10, 3 ); 

Se você não está usando o bootstrap e quer tornar suas tabelas responsivas ainda é possível usar essa extensão do próprio TablePress. Aproveite a visita e saiba mais sobre os hooks (actions e filters) no WordPress.