Saltar al contenido

Categoría: 

Integrar columna de ingresos obtenidos en los cupones de Woocommerce

snippets

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 );
Open chat
Escríbenos
¿Cómo es el plugin de tus sueños? :)