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.

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 para gabriel Cancelar resposta