Olá pessoal, tudo certo?
Ultimamente tenho desenvolvido diversos projetos, sendo 90% deles em WordPress, o que tem gerado um know-how bacana e gostaria de compartilhar o que venho aprendendo aqui com vocês!
Hoje vamos aprender como customizar o list-table do WP, pra quem não sabe, list table é o componente do WordPress que lista alguns campos dos seus posts nos post-types padrões e customizados, veja abaixo:
E digamos que agora você queira inserir uma nova coluna a ser exibida:
ID, por exemplo:
É muito simples e há várias maneiras de se executar esta funcionalidade, como descritas clicando aqui, mas neste caso utilizaremos o hook pertencente ao filtro “manage_edit-post_columns”, o bacana é que existem 3 variações para uso em casos específicos:
1 2 3 4 5 6 7 8 | // Páginas add_filter( 'manage_edit-page_columns', 'SUA_FUNCAO' ); // Posts add_filter( 'manage_edit-post_columns', 'SUA_FUNCAO' ); // Post Type Customizado add_filter( 'manage_edit-CUSTOMPOSTTYPE_columns', 'SUA_FUNCAO' ); |
Para isso, utilizarei o filter referenciando a posts normais, chamando a seguinte função, que deverá ser inserida no arquivo “functions.php” do seu tema de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function my_custom_columns_blog_vilourenco($columns) { $columns = array( 'cb' => '<input type="checkbox" />', 'title' => 'Título', 'id' => 'ID', 'author' => 'Autor', 'categories' => 'Categorias', 'tags' => 'Tags', 'date' => 'Data' ); return $columns; } add_filter("manage_edit-post_columns", "my_custom_columns_blog_vilourenco"); |
Repare que o que realizei foi simplesmente inserir os campos padrões, e também o de minha escolha: “id”.
Existem casos para isto em que apenas se adiciona o que se deseja, sem reescrever todos, mas para que fique didático optei por reescrever e inserir de maneira que o entendimento seja o melhor possível.
Feito isso temos então um list-table customizado, mas e agora para trazer a informação desta coluna? E se quiser também inserir condicionais para estes dados e trabalhar diferentes informações? É tudo possível, vejamos a seguir!
Para isto, utilizarei a action “manage_posts_custom_column”, você encontra mais informações sobre estas e outras clicando aqui.
A função abaixo simplesmente verifica qual campo desejo tratar e exibe o resultado, para o exemplo estarei trazendo o valor de cada post (ID):
1 2 3 4 5 6 7 8 9 | function my_custom_data_columns_blog_vilourenco($column) { global $post; if($column == 'id') { echo $post->ID; } } add_action("manage_posts_custom_column", "my_custom_data_columns_blog_vilourenco"); |
E o resultado:
Agora digamos que eu queira tratar este valor, sendo que quando for maior que 1000 ele me traga uma mensagem e menor, outra!
Basta inserir uma condicional com esta validação:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function my_custom_data_columns_blog_vilourenco($column) { global $post; if($column == 'id') if($post->ID > 1000) { echo "Valor maior que 1000"; }else{ echo "Valor menor que 1000"; } } add_action("manage_posts_custom_column", "my_custom_data_columns_blog_vilourenco"); |
E o resultado será:
(Compare o resultado com os valores da última imagem)
Com isto fica muito melhor de inserir uma definição para seu cliente das melhores informações a serem visualizadas no list-table, seja na listagem de posts, páginas ou do seu post-type customizado!
Uma dica interessante é que se você utiliza o plugin Advanced Custom Fields, você pode trazer a informação de algum campo, basta chamar normalmente a função “get_field()”, e passando o segundo parâmetro: “$post->ID” pois como nesta função utilizamos a variável global $post, ele faz referência a mesma e traz todas suas dependências.
Vejam um exemplo abaixo, como se utilizássemos algum campo do plugin citado acima:
1 2 3 4 5 6 7 8 9 | function my_custom_columns_blog_vilourenco($column) { global $post; if($column == 'Campo Customizado') { echo get_field('NOME_DO_CAMPO_CUSTOMIZADO_DO_PLUGIN', $post->ID); } } add_action("manage_posts_custom_column", "my_custom_columns_blog_vilourenco"); |
É isso pessoal, espero que utilizem, que seja de grande utilidade no projeto de vocês e havendo algum tipo de dúvida basta comentar abaixo ou entrarem em contato direto comigo!
Grande abraço!