En el post de hoy he recopilado varios snippets de código que pueden servirte de ayuda para modificar la parte más importante de una tienda online: el checkout, la página donde el cliente completa los datos de su pedido y hace el pago.
Espero que te sirvan de ayuda!
Pedido mínimo
Este snippet de código te permite establecer un pedido mínimo para tu tienda online. Si el pedido es inferior a esa cantidad se mostrará un mensaje en el checkout.
/*establecer pedido mínimo*/ add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' ); add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' ); function wc_minimum_order_amount() { // Cambiar este valor por el pedido mínimo de tu tienda $minimum = 20; if ( WC()->cart->total < $minimum ) { if( is_cart() ) { wc_print_notice( sprintf( 'El pedido mínimo es de 20€ impuestos incluidos.' , wc_price( $minimum ), wc_price( WC()->cart->total ) ), 'error' ); } else { wc_add_notice( sprintf( 'El pedido mínimo es de 20€ impuestos incluidos.' , wc_price( $minimum ), wc_price( WC()->cart->total ) ), 'error' ); } } }
Forzar crear cuenta de cliente
Es importante que el usuario se registre al hacer la compra. De esta forma podrá acceder a su cuenta, cambiar contraseñas, revisar antiguos pedidos etc. Sin embargo muchos clientes se saltan este paso.
Con este snippet puedes dejar marcada por defecto la opción de crear una cuenta.
/*crear cuenta al comprar*/ add_filter( 'woocommerce_create_account_default_checked', function( $isChecked) { return true; } );
Redirigir al checkout al añadir un producto al carrito
Si quieres evitar un paso en el proceso de compra, puedes dirigir a tus clientes al checkout cuando añadan un producto al carrito. Puede ser interesante si en tu tienda online no es común comprar varios productos a la vez.
add_filter ('add_to_cart_redirect', 'redirect_to_checkout'); function redirect_to_checkout() { global $woocommerce; $checkout_url = $woocommerce->cart->get_checkout_url(); return $checkout_url; }
Quitar notas de envío del checkout
Si tus productos no requieren envío no necesitas el campo de notas, ya que tu cliente no necesita darte ninguna indicación. Con este snippet puedes eliminarlo de forma rápida.
add_filter( 'woocommerce_checkout_fields' , 'remove_order_notes' ); function remove_order_notes( $fields ) { unset($fields['order']['order_comments']); return $fields; } // Quitar el título del campo add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
Añadir un mensaje al final del checkout
Si quieres mostrar un mensaje al final de la página de checkout utiliza este snippet. Puede serte útil para mostrar información sobre el envío.
// Añadir mensaje al final del checkout function notice_shipping() { echo '<p id="mensaje">Este es un mensaje acerca del envío.</p>'; } add_action( 'woocommerce_before_order_notes', 'notice_shipping' );
photo credit: Generic Payment Credit Сard via photopin (license)
Hola, este codigo se ingresa en algun archivo chekout.php o en donde lo ingreso?
Si deseo duplicar una opción del checkout, por ejempo wirebank ó que aparezcan dos opciones de paypal como sería?
Saludos y gracias
Hola Alberto, este código puedes añadirlo al archivo funtions.php del tema que tengas activo.
Para añadir más opciones de pago deberías añadir el plugin correspondiente y configurarle.
Saludos!
Hola, muy interesante el código, pudiera servirme, pero tengo una duda: actualmente al WooCheckout permite omitir los campos sin escribir ningún código. El soporte de la pasarela (algo desarrollado localmente en mi país) me pide que desactive los campos de nombre y apellido, pero el pedido no se reporta en Woocommerce y la lista de pedidos se me bloquea. Es posible desactivarlos sin que se afecte la lista de pedidos y el pedido ingrese efectivamente a Woocommerce? o son campos imborrables? Gracias
Hola Luis Carlos, en WooCommerce hay algunos campos que son obligatorios y WooCommerce no deja que sea de otra forma. En este post tienes algún ejemplo para modificarlo: https://www.skyverge.com/blog/how-to-edit-required-woocommerce-checkout-fields/
cuando se redirige al checkout después de seleccionar el producto, que se hace si se quiere eliminar o cancelar el pedido, por que cuando uno se devuelve y selecciona otro producto el anterior queda guardado y ya no muestra solo el ultimo que se selecciono sino que muestra los dos, hay algún tipo de solución para esto??
Hola David, el caso de redirigir al checkout al añadir el producto lo veo más para tiendas donde habitualmente se compra un solo producto, en ese caso no tiene mucho sentido que el cliente revise el carrito y por eso la idea de saltarselo. De todas formas siempre se puede crear un enlace a la página de carrito para ir desde el checkout.
Saludos.
Hola, amigo. Quiero implementar el snippet para saltar el carrito. Ya que vendo ebooks y es más sencilo para el comprador.
Ahora, no me funciona el código. Lo añado al functions.php y nada. Sigue el curso normal con el carrito. ¿Qué hice mal?
Hola Omar, comprueba que estás utilizando el functions.php del tema activo. Prueba a desactivar el tema actual y prueba con otro para descartar que tu tema tenga algún tipo de incompatiblidad.
Saludos.
¡Hola! Quiero añadir una funcionalidad particular bastante especial a mi proceso de compra y no encuentro ningún código ni plugin que me permita hacerlo. Espero que puedas ayudarme.
Necesito que en el carrito de compra sólo se pueda tener un único producto (vendo productos virtuales y sólo quiero permitir la descarga de un producto por compra) y necesito que cuando el usuario abandona cualquier paso del proceso de compra (ya sea el carrito o el check-out de finalizar compra) el carrito se vacíe (de forma que si entra en la tienda y añade un producto diferente sólo aparezca ese producto en el carrito).
¡Muchas gracias!
Hola Guillermo, para tu caso quizás debes de probar Easy Digital Downloads en lugar de WooCommerce: https://es.wordpress.org/plugins/easy-digital-downloads/ Ya que permite un mayor control de las descargas de archivos digitales y seguro se adapta mejor a tu idea.
Saludos!
Hola Muchas gracias, me has ayudado a averiguar como funciona el checkout de woocommerce.
Estoy aprendiendo a modificar woocommerce y no encontraba donde se encontraban los campos del formulario.
Estoy viendo tu código me ha abierto los ojos. Pero quería saber por ejemplo el hook woocommerce_before_order_notes donde introduce un mensaje al final no lo veo en el archivo form-chekcout.php
Y también, donde se encuentra el hook woocommerce_billing_fields
Muchisimas gracias!!
Buenas… a ver si tu puedes ayudarme. Lo que necesito es validar mi formulario por ejemplo en código postal quiero que sean puros números los permitidos a ingresar. Sé que solo es cuestión de cambiar el tipo de input a number … ¿pero como puedo editar esos atributos de un input?
Hola Francisco, esa modificación requiere código a medida y se escapa de lo que puedo ofrecerte en los comentarios del post.
Saludos.
Hola como hago para configurar el codigo en woocommerce finalizar compra no me aparece en la pantalla de ajustes. Gracias
Hola Maura, no entiendo bien tu pregunta.