Uma vez desenvolvi uma loja onde meu cliente vendia chaves de licença que seriam usadas para ativar o software que foi vendido.
Então, a cada pedido feito, além de ficarem anexados aos pedidos dados como Nome e Email, a Chave de Licença, também, deveria ficar anexada ao pedido de cada comprador.
Ao acessar a página Pedidos, dentro da área administrativa do WordPress, você vê uma tabela que lista todos os pedidos que já foram feitos. Essa tabela pode ser ilustrada assim:
Pedido | Enviar para | … | Data | Total |
---|
No entanto, a tabela deveria ter uma coluna nova com o nome de Chave, e ficaria assim:
Pedido | Enviar para | … | Data | Total | Chave |
---|
Atenção! Os pedidos do WooCommerce pertencem ao tipo de post
shop_order
.
Como adicionar nova coluna na página que mostra os pedidos?
- Para adicionar uma nova coluna usamos o filtro manage_edit-${post_type}_columns;
- Ou seja, nosso filtro para adição da nova coluna será escrito assim:
manage_edit-shop_order_columns
; - Veja o código abaixo e entenda.
<?php
/**
* Add custom column to shop_order post type
*
* @param $columns array Array of all registered columns.
*
* @return array
*/
function add_custom_column_to_shop_order($columns)
{
$new_columns = is_array($columns) ? $columns : [];
$new_columns['software_key'] = __('Chave', 'text-domain');
return $new_columns;
}
add_filter('manage_edit-shop_order_columns', 'add_custom_column_to_shop_order');
Como inserir o valor da nova coluna na página que mostra os pedidos?
- Para adicionar valores àquela coluna você a ação manage_${post_type}_posts_custom_column;
- Ou seja, nesse exemplo a ação para adicionar um valor é escrita assim:
manage_shop_order_posts_custom_column
; - Veja o código abaixo e entenda.
<?php
/**
* Add custom value to custom column in admin on page that lists the shop_order post type.
*
* @param string $column_name This is the column key.
* @param int $post_id
*/
function add_custom_column_value_to_shop_order($column_name, $post_id)
{
if ('software_key' === $column_name) {
echo get_post_meta($post_id, 'software_key', true) ? get_post_meta($post_id, 'software_key', true) : '-';
}
}
add_action('manage_shop_order_posts_custom_column', 'add_custom_column_value_to_shop_order', 10, 2);
Atenção! Os códigos acima podem ser inseridos no arquivo
functions.php
, que fica dentro da pasta do seu tema.
Olá Felipe,
Em qual arquivo você foi para fazer a adição da coluna?
Opa!
Você pode adicionar todos os códigos dentro do arquivo functions.php.
Esse arquivo fica dentro da pasta do seu tema.
Faz sentido?