Parece de locos ¿verdad?, ¡dejar que los clientes pongan el precio!, pero en realidad es más sensato de lo que puedas imaginar, hay muchas situaciones en las que podría ser incluso muy rentable dejar que sean tus clientes quienes pongan el precio de tus productos o servicios.
Digamos, por ejemplo, que tienes productos de muy bajo coste, con un stock exagerado, que necesitas liberar de tu almacén, o incluso productos que darías gratis con tal de que se los lleven. O también, que simplemente recibes donativos. Te sorprendería lo generosos que pueden llegar a ser los clientes, pagándote incluso más de lo que imaginabas o habrías puesto tú como precio.
Son muchas las situaciones posibles en las que ofrecer a tus clientes la posibilidad de poner ellos el precio a los productos puede revertir no en pérdida de ganancias, sino en justo lo contrario.
En cualquier caso, si te animas, es fácil de implementar un sistema por el que sean los clientes quienes decidan el precio de los productos.
Índice de contenidos
Que tus clientes pongan su precio para un producto específico
Un modo sencillo de ofrecer esta funcionalidad es probar con algún producto de difícil salida, o al que incluso no sepas qué precio (habitualmente bajo) poner, incluso como experimento. Solo necesitas 2 cosas:
- El ID del producto.
- Poner el precio del producto elegido a 0 (cero).
El ID del producto puedes verlo fácilmente en el listado de productos.
Y el precio, a cero euros, se lo pones tú editando el producto.
Una vez publiques el anuncio, inicialmente se podría encargar por cero euros, totalmente gratis.
Pero vamos a aplicarle la magia del código para que el cliente pueda ponerle el precio que él quiera:
/* Permitir al cliente poner su precio al producto con ID 7814 */ add_action( 'woocommerce_before_add_to_cart_button', 'ayudawp_caja_poner_precio', 9 ); function ayudawp_caja_poner_precio() { global $product; if ( 7814 !== $product->get_id() ) return; woocommerce_form_field( 'set_price', array( 'type' => 'text', 'required' => true, 'label' => 'Pon tu precio ' . get_woocommerce_currency_symbol(), )); } add_filter( 'woocommerce_add_to_cart_validation', 'ayudawp_validacion_caja_poner_precio', 9999, 3 ); function ayudawp_validacion_caja_poner_precio( $passed, $product_id, $qty ) { if ( isset( $_POST['set_price'] ) && sanitize_text_field( $_POST['set_price'] ) == '' ) { wc_add_notice( 'Tienes que ponerle un precio, el que quieras', 'error' ); $passed = false; } return $passed; } add_filter( 'woocommerce_add_cart_item_data', 'ayudawp_datos_carrito_poner_precio', 9999, 2 ); function ayudawp_datos_carrito_poner_precio( $cart_item, $product_id ) { if ( 7814 !== $product_id ) return $cart_item; $cart_item['set_price'] = sanitize_text_field( $_POST['set_price'] ); return $cart_item; } add_action( 'woocommerce_before_calculate_totals', 'ayudawp_alterar_precio', 9999 ); function ayudawp_alterar_precio( $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 ( 7814 !== $product->get_id() ) continue; $cart_item['data']->set_price( $cart_item['set_price'] ); } }
El código anterior, una vez guardado en tu archivo o plugin de funciones, mostrará una caja en la que, ahora sí, el cliente podrá elegir su precio.
Que se añadirá al carrito con el precio elegido, para que pueda pagarlo por ese mismo importe.
En el código solamente tienes que cambiar el ID del producto de ejemplo por el del producto que tú hayas decidido ofrecer mediante esta estrategia de precio cero + pon tu precio.
¡Pruébalo, seguro que tus clientes te sorprenden gratamente! Ayuda hacer como en el ejemplo, poniendo un precio anterior bastante alto, para que casi cualquier precio que propongan les parezca que se están llevando una ganga.
Eso sí, debes estar también dispuesto a darles el producto por incluso cero euros, pues el código admite cualquier cantidad, también 0.
Que tus clientes pongan precio o hagan donaciones ampliamente
Otra posibilidad, para los que no gusten de códigos, es usar un plugin como Name Your Price, pensado inicialmente para webs de donativos, pero que puedes igualmente utilizarlo en cualquier situación.
Eso sí, aquí hay muchas más opciones. Para empezar, puedes crear reglas para categorías de productos completas, decidiendo el precio mínimo, incluso un precio máximo y uno sugerido, totalmente opcionales.
O, si lo prefieres, puedes no crear reglas para categorías completas y decidir producto a producto, Simplemente editando un producto y especificando que sea un producto del tipo «Name your price».
Que se verá de este modo, una vez configurado a tu gusto…
El plugin Name Your Price ofrece algunas posibilidades adicionales, pero no descartes la opción mediante código vista antes, si te sirve para tus objetivos.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Me parece una buena idea, Fernando, que los clientes pongan el precio. En la opción de usar el código, si en lugar de a un sólo producto se aplica a varios, ¿habría que repetir el código para cada ID de producto o bastaría con escribir los ID de cada producto en el mismo código?
Saludos
Jesús
Fernando, ¿se puede aplicar también el código a los productos variables?
Jesús, el código del artículo de Fernando sólo sirve para un único ID de producto (tanto simple como variable). Poner más de uno provocará un error en la web. Ignoro si con alguna modificación en el código se podrán incluir varios ID de producto.
Fernando: Tras realizar una prueba del código con un ID de producto virtual y pago de cero euros, el pedido se queda en estado PROCESANDO y no permite al cliente realizar la descarga del producto virtual, ya que sólo se puede realizar la descarga cuando el administrador cambie manualmente el estado a COMPLETADO. Lo cual genera un doble problema: para el cliente que puede sentirse engañado y para el administrador que tiene que estar pendiente para realizar el cambio de estado de cada pedido en el que el pago sea cero euros.
Saludos
Gracias por la información, Ricardo.