I’ve created below examples to add columns to the invoice by using filters. Not tested, but should work totally fine.
function add_sku_column( $columns, $invoice ) {
$columns = array_merge( array( 'sku' => __( 'SKU', 'woocommerce-pdf-invoices' ) ), $columns );
return $columns;
}
add_filter( 'wpi_get_invoice_columns', 'add_sku_column', 10, 2 );
function add_sku_column_data( $row, $item_id, $item, $invoice ) {
/** @var WC_Product $product */
$product = $item->get_product();
$row = array_merge( array( 'sku' => $product ? $product->get_sku() : '-' ), $row );
return $row;
}
add_filter( 'wpi_get_invoice_columns_data_row', 'add_sku_column_data', 10, 4 );
function add_unit_of_measure_column( $columns, $invoice ) {
// Splice columns at 'quantity' column, add column and merge with last part.
$offset = array_search( 'quantity', array_keys( $columns ), true );
$columns = array_merge(
array_splice( $columns, 0, $offset ),
array(
'unit_of_measure' => __( 'Unitate de masura', 'woocommerce-pdf-invoices' ),
),
$columns
);
return $columns;
}
add_filter( 'wpi_get_invoice_columns', 'add_unit_of_measure_column', 20, 2 );
function add_unit_of_measure_column_data( $row, $item_id, $item, $invoice ) {
/** @var WC_Product $product */
$product = $item->get_product();
$attribute_value = $product ? $product->get_attribute( 'Unitate de masura' ) : '';
$offset = array_search( 'quantity', array_keys( $row ), true );
$row = array_merge(
array_splice( $row, 0, $offset ),
array(
'unit_of_measure' => $attribute_value,
),
$row
);
return $row;
}
add_filter( 'wpi_get_invoice_columns_data_row', 'add_unit_of_measure_column_data', 20, 4 );