Redirigir checkout al añadir un producto en Woocommerce · Saltar la pantalla de carrito

Si tenemos una tienda con pocos productos, y no queremos mostrar el carrito para agilizar los clics podemos decirle a Woocommerce que no pase por la pantalla del carrito.

Para ello debemos añadir en nuestro archiuvo functions.php

//Redirigir al chekcout sin pasar por el carrito
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;
}

Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

25 Comments

Borja

Hola kike,
Felicidades y gracias por tan fantástica recopilación de códigos.

A ver si me puedes ayudar…
Me interesa mucho esta funcionalidad. Sería posible implementar dicho redireccionamiento únicamente a ciertos productos o categorías?

Muchas gracias.
Un saludo!

Reply
kike

Hola Borja, muchas gracias 🙂

Para las categorías prueba con:

add_filter ('add_to_cart_redirect', 'redirect_to_checkout_with_category');
function redirect_to_checkout_with_category() {
	global $woocommerce;

	// Obten el id del producto
	$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
	// Comprueba que la id del producto pertenede a la categoría que le vamos a indicar
	if( has_term( 'nombrecategoria', 'product_cat', $product_id ) ){
		// Obtenemos la URL
		$checkout_url = get_permalink(get_option('woocommerce_checkout_page_id'));
		// devoltemos la nueva URL y lo redirigimos al carrito
		return $checkout_url;
	 };
}

Y cambia «nombrecategoria» por el nombre de tu categoría,

Para los productos:

add_filter( 'woocommerce_add_to_cart_redirect', 'redirect_to_checkout_with_product_id' );
function redirect_to_checkout_with_product_id( $url ) {
	if (!isset($_REQUEST['add-to-cart']) || !is_numeric($_REQUEST['add-to-cart']))
		return $url;

	$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
	
	// Redirigimos los productos que contengan esta ID
	if (in_array($product_id, array( 90, 93, 96)))
		$url = WC()->cart->get_checkout_url();
	return $url;
}

Y en el array, pon las ID’s de los productos que te interesen.

Espero te sirva 🙂

Saludos!

Reply
edu

Hola Kike, buen blog.

¿Sabes como puedo hacer para que al hacer click en el boton «añadir al carrito» me vuelva a recargar la página en la que estoy?

Gracias. Un saludo.

Reply
kike

Hola Edu!

Muchas gracias por tus comentarios 🙂

Puedes configurarlo desde: Woocommerce Ajustes > Producto > Mostrar > Activar botones AJAX de añadir al carrito en los archivos

Espereo que te sirva de ayuda!

Un saludo!

Reply
edu

Hola Kike, gracias por tu respuesta pero no me ha servido. Uso el plugin «MarkeKing Floating Cart» para mantener visible el carrito de la compra en toda la página. Lo que quiero es que al dar al botón «añadir al carrito» de cualquier producto, se actualicen las cantidad de dicho plugin. Cuando le doy a «añadir al carrito» el plugin no hace nada hasta que se actualiza la página y esto es un poco molesto.
Gracias por tu ayuda.

Reply
kike

Disculpa Edu, no conozco ese plugin 🙁
Si alguna vez lo utilizo te digo cosas 🙂

Gracias!

Reply
Iván

Gracias, lo he probado y me ha funcionado. Es genial cuando tienes un problema y alguien te lo soluciona rápido y fácil, y sobre todo gratis 😉

¡Un abrazo!

Reply
kike

Disculpa Alejandro, cuando mandaste el comentario recibia un error al intentar acceder al enlace.

Un saludo!

Reply
Nico

Hola Kike
Como podría redirigir el botón Añadir al carrito únicamente en la lista de productos?
El objetivo es que, al hacer click, te lleve a la ficha del producto en vez de añadirlo al carrito, y una vez dentro, te lo añada al carrito.
Un saludo y gracias

Reply
kike

Hola Nico!
Una de las opciones es modificar a mano el template del loop donde Woocommerce renderiza los productos y modificar la ruta del botón.
Para ello dirígete al archivo: add-to-cart.php
Ubicado en: /wp-content/plugins/woocommerce/templates/loop/add-to-cart.php

Y sobre la linea 25 debe de aparecer un bloque parecido a este:

echo apply_filters( 'woocommerce_loop_add_to_cart_link',
	sprintf( '%s',
		esc_url( $product->add_to_cart_url() ),
		esc_attr( isset( $quantity ) ? $quantity : 1 ),
		esc_attr( $product->id ),
		esc_attr( $product->get_sku() ),
		esc_attr( isset( $class ) ? $class : 'button' ),
		esc_html( $product->add_to_cart_text() )
	),
$product );

Fíjate, en al linea 3 aparece:

esc_url( $product->add_to_cart_url() ),

Puedes modificarlo por la url del producto:

esc_url( $product->post->guid ),

Espero te ayude 🙂
Saludos!

Reply
Jorge

Hola Kike puedes ayudarme a hacerlo? mi sitio web es inisalta.com y quiero que en el boton inscribirme de un producto directamente me envie a checkout y saltar la pagina del carrito. Ayudame por favor

Reply
kike

Hola Jorge 🙂
¡Gracias por escribir!

Pásame el repositorio por email y le pego un ojo.

¡Saludos!

Reply
Javier

Hola en mi web tengo pueto un sortcode de un producto en la web tipo ofertas y queiro que cunado pinchen el el vallan directamente al checkout pero en vez de ir al checkout me manda al carrito vacio sabes el motivo?

Gracias

Reply
kike

¡Hola Javier!

Gracias por escribir, pásame más datos 🙂
Escríbeme al email, pásame el repositorio de tu proyecto y le pego un ojo.

¡Saludos!

Reply
Juana

Hola Kike, gracias por tu ayuda! Solo una pregunta de ignorante que soy: ese código lo debo añadir a functions.php dentro de la carpeta raíz de my theme? O en algún otro directorio de Woocommerce que no estoy encontrando? Muchas gracias!

Reply
kike

¡Hola Juana!
Gracias por escribir.
Si, en un principio debes de poner ese código en el archivo functions.php de tu tema, la ruta debería de ser algo así:

/wp-content/themes//function.php

Ya me cuentas 🙂

PD: Cuando tengas la web terminada pásamela que le pegue un vistazo 🙂

Reply
Juana

Muchas gracias Kike por tu respuesta! Estoy haciendo lo mejor que puedo con mi sitio, apenas tenga algo decente para mostrar te envío. Saludos!

Reply
kike

No hay de que Juana 🙂

¡Me alegro mucho! Seguro que te sale algo molón

¡Un saludo!

Reply
josé rojas

Hola Kike. Tengo una página web que me hicieron con Word press. Ha funcionado durante un mes, pero desde el domingo perdió el enlace en el carrito de compras y el checkout. Al querer continuar difumina el texto y queda en en suspensión. Quería saber si tiene experiencia en la solución de ese tipo de percance o me puede orientar con este asunto. Gracias de antemano

Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*