Saltar al contenido

Integrar columna de ingresos obtenidos en los cupones de Woocommerce

Para poder añadir una columna mostrando los ingresos obtenidos por cada cupón de Woocommerce, deberemos utilizar un filtro y una acción:

  • manage_edit-shop_coupon_columns:
    Con este filtro tenemos acceso a las columnas de la tabla de cupones de Woocommerce que encontramos en la página de administración de WordPress (wp-admin). Mediante este filtro añadiremos una nueva columna de «ingresos obtenidos».
  • manage_shop_coupon_posts_custom_column:
    Con esta acción podemos añadir contenido personalizado a las columnas de la tabla de cupones de Woocommerce. Esta acción dispone de dos parámetros: el primero hace referencia el nombre de la columna actual, mientras que el segundo contiene el ID del cupón actual.

A continuación el snippet para integrar esta nueva columna:

// Función auxiliar para obtener el total de ventas de un cupón a partir de su ID
function get_coupon_total_sales( $coupon_id ) {
global $wpdb;
return $wpdb->get_col(
        $wpdb->prepare("
    	SELECT SUM({$wpdb->prefix}wc_order_product_lookup.product_net_revenue)
    	FROM {$wpdb->prefix}wc_order_coupon_lookup
    	INNER JOIN {$wpdb->prefix}wc_order_product_lookup
    	ON {$wpdb->prefix}wc_order_coupon_lookup.order_id =
    	{$wpdb->prefix}wc_order_product_lookup.order_id
    	WHERE {$wpdb->prefix}wc_order_coupon_lookup.coupon_id = %d",
    	$coupon_id
    	)
    )[0] ?? 0;
} 
 
// Añadimos la columna nueva a la tabla de cupones
add_filter( 'manage_edit-shop_coupon_columns', function( $columns ) {
	$columns['total_sales'] = "Ingresos obtenidos";
	return $columns;
} );

// Añadimos el contenido de la nueva columna creada
add_action( 'manage_shop_coupon_posts_custom_column', function( $column, $coupon_id ) {
	if ( $column == 'total_sales' ) {
	    echo wc_price( get_coupon_total_sales( $coupon_id ) );
	}
}, $priority = 10, $accepted_args = 2 );