Como ya sabrás, ¿por que lo sabes verdad?, crear una oferta, o descuento, en WooCommerce es muy sencillo, solo tienes que poner el precio normal del producto y, a continuación, el precio rebajado.
Así, si quieres que un producto tenga un 15% de descuento, y vale 50 euros, el precio rebajado sería de … un momento … 50 por 0,15 es 7,5, menos los 50 euros iniciales, eso ¡42,5 euros!
Bueno, no es tan fácil, a veces, así que ¿y si añadimos a la caja de datos del producto un desplegable que nos ayude a aplicar rápidamente, y sobre todo sin tener que repasar las matemáticas de primaria, descuentos a los productos?
Que mucha inteligencia artificial pero ¿no iremos a desaprovechar la que ya tenemos disponible, ,no?
Vamos a ello porque es muy fácil, solo tienes que crear una función personalizada, que ya sabrás cómo copiar y pegar para que funcione, para mostrar el desplegable de los descuentos rápidos aplicables, tal que así…
/* Desplegable con porcentajes de descuento para productos */ add_action( 'woocommerce_product_options_pricing', 'ayudawp_porcentajes_descuento' ); function ayudawp_porcentajes_descuento() { global $product_object; woocommerce_wp_select( array( 'id' => '_pc_discount', 'value' => get_post_meta( $product_object->get_id(), '_pc_discount', true ), 'label' => '% de descuento', 'options' => array( '0' => '0', '10' => '10', '15' => '15', '25' => '25', '50' => '50', ), ) ); } add_action( 'save_post_product', 'ayudawp_guardar_porcentaje_descuento' ); function ayudawp_guardar_porcentaje_descuento( $product_id ) { global $typenow; if ( 'product' === $typenow ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( isset( $_POST['_pc_discount'] ) ) { update_post_meta( $product_id, '_pc_discount', $_POST['_pc_discount'] ); } } } add_filter( 'woocommerce_get_price_html', 'ayudawp_cambiar_precio_mostrado', 9999, 2 ); function ayudawp_cambiar_precio_mostrado( $price_html, $product ) { if ( is_admin() ) return $price_html; if ( '' === $product->get_price() ) return $price_html; if ( get_post_meta( $product->get_id(), '_pc_discount', true ) && get_post_meta( $product->get_id(), '_pc_discount', true ) > 0 ) { $orig_price = wc_get_price_to_display( $product ); $price_html = wc_format_sale_price( $orig_price, $orig_price * ( 100 - get_post_meta( $product->get_id(), '_pc_discount', true ) ) / 100 ); } return $price_html; } add_action( 'woocommerce_before_calculate_totals', 'ayudawp_cambiar_precio_carrito', 9999 ); function ayudawp_cambiar_precio_carrito( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return; foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) { $product = $cart_item['data']; if ( get_post_meta( $product->get_id(), '_pc_discount', true ) && get_post_meta( $product->get_id(), '_pc_discount', true ) > 0 ) { $price = $product->get_price(); $cart_item['data']->set_price( $price * ( 100 - get_post_meta( $product->get_id(), '_pc_discount', true ) ) / 100 ); } } }
Ni te preocupes, mucho código pero es solo copiar y pegar, y mira que bien queda…
Y no es solo un desplegable mono, que se ve en el editor de productos, lo bueno es que te hace el cálculo del porcentaje de descuento y lo muestra en la página del producto, en el carrito, en todas partes.
¡Y la de cálculos matemáticos que te ahorras!
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Fernando.
Como siempre un gran tip.
Excelente tío Fernado como siempre, pero y si voy un paso más allá y deseo que la lista de % de descuentos no sea cerrada, sin que deseo poner un campo numérico y allí asignar el valor del % de descuento que deseo, por ejemplo el 12% ¿se puede hacer?