En los productos rebajados de WooCommerce se muestra una insignia de «oferta» tanto en la vista de archivo como en la del propio producto, si quieres reemplazar esa insignia por el descuento que se aplica usa el siguiente snippet en el functions.php de tu child theme.
// Mostrar descuento en porcentaje add_filter( 'woocommerce_sale_flash', 'display_percentage_on_sale_badge', 20, 3 ); function display_percentage_on_sale_badge( $html, $post, $product ) { if( $product->is_type('variable')){ $percentages = array(); // This will get all the variation prices and loop throughout them $prices = $product->get_variation_prices(); foreach( $prices['price'] as $key => $price ){ // Only on sale variations if( $prices['regular_price'][$key] !== $price ){ // Calculate and set in the array the percentage for each variation on sale $percentages[] = round( 100 - ( floatval($prices['sale_price'][$key]) / floatval($prices['regular_price'][$key]) * 100 ) ); } } // Muestra el valor máximo de descuento $percentage = max($percentages) . '%'; } elseif( $product->is_type('grouped') ){ $percentages = array(); // Esto obtendrá todos los precios de las variaciones y un bucle a través de ellos $children_ids = $product->get_children(); foreach( $children_ids as $child_id ){ $child_product = wc_get_product($child_id); $regular_price = (float) $child_product->get_regular_price(); $sale_price = (float) $child_product->get_sale_price(); if ( $sale_price != 0 || ! empty($sale_price) ) { // Calculate and set in the array the percentage for each child on sale $percentages[] = round(100 - ($sale_price / $regular_price * 100)); } } // Muestra el valor máximo de descuento $percentage = max($percentages) . '%'; } else { $regular_price = (float) $product->get_regular_price(); $sale_price = (float) $product->get_sale_price(); if ( $sale_price != 0 || ! empty($sale_price) ) { $percentage = round(100 - ($sale_price / $regular_price * 100)) . '%'; } else { return $html; } } return '<span class="onsale">' . esc_html__( '-', 'woocommerce' ) . ''. $percentage . '</span>'; // Si es necesario cambia o elimina el texto '-' }
Fuente: Medium