Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

219
Views
Mostrar el porcentaje de descuento cerca del precio de venta en las páginas de un solo producto para WC 3.0+

Tenía este código en function.php de mi tema para mostrar el porcentaje después del precio y funcionaba bien en WooCommerce v2.6.14.

Pero este fragmento ya no funciona en WooCommerce versión 3.0+.

¿Cómo puedo arreglar eso?

Aquí está ese código:

 // Add save percent next to sale item prices. add_filter( 'woocommerce_sale_price_html', 'woocommerce_custom_sales_price', 10, 2 ); function woocommerce_custom_sales_price( $price, $product ) { $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 ); return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' ); }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Actualizado - 2019 (evitar el problema del precio de redondeo) - 2017 (evitar el valor porcentual de NAN% )

El gancho woocommerce_sale_price_html ha sido reemplazado por un gancho diferente en WooCommerce 3.0+, que ahora tiene 3 argumentos (pero ya no tiene el argumento $product ).

 add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 ); function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) { // Getting the clean numeric prices (without html and currency) $_reg_price = floatval( strip_tags($regular_price) ); $_sale_price = floatval( strip_tags($sale_price) ); // Percentage calculation and text $percentage = round( ( $_reg_price - $_sale_price ) / $_reg_price * 100 ).'%'; $percentage_txt = ' ' . __(' Save ', 'woocommerce' ) . $percentage; $formatted_regular_price = is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price; $formatted_sale_price = is_numeric( $sale_price ) ? wc_price( $sale_price ) : $sale_price; echo '<del>' . $formatted_regular_price . '</del> <ins>' . $formatted_sale_price . $percentage_txt . '</ins>'; }

Este código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.
El código está probado y funciona. Para WooCommerce versión 3.0+ (gracias a @Mikebcn y @AsifRao)

Para redondear el porcentaje, puede usar round() , number_format() o number_format_i18n() :

 $percentage = number_format_i18n( ( $_reg_price - $_sale_price ) / $_reg_price * 100, 0 ).'%'; $percentage = number_format( ( $_reg_price - $_sale_price ) / $_reg_price * 100, 0 ).'%';

Código de respuesta original: aquí está ese código funcional similar:

 // Only for WooCommerce version 3.0+ add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 ); function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) { $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%'; $percentage_txt = ' ' . __(' Save ', 'woocommerce' ) . $percentage; $price = '<del>' . ( is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price ) . '</del> <ins>' . ( is_numeric( $sale_price ) ? wc_price( $sale_price ) . $percentage_txt : $sale_price . $percentage_txt ) . '</ins>'; return $price; }

Este código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.
El código está probado y funciona. Para WooCommerce versión 3.0+.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!