Como adicionar nova coluna na página de pedidos do WooCommerce

WooCommerce - Adicionar coluna na página que lista os pedidos

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:

PedidoEnviar paraDataTotal

No entanto, a tabela deveria ter uma coluna nova com o nome de Chave, e ficaria assim:

PedidoEnviar paraDataTotalChave

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.


Filipe Seabra
Filipe Seabra
Full Stack Web Developer

2 Comentários

    1. Opa!
      Você pode adicionar todos os códigos dentro do arquivo functions.php.
      Esse arquivo fica dentro da pasta do seu tema.
      Faz sentido?

Deixe um comentário