Woocommerce añadir al carrito botón redirigir a la caja


He creado un comercio electrónico utilizando el plugin woocommerce. Estoy vendiendo solo una suscripción por lo que la página "/cart/" es inútil. Estoy tratando de deshacerme de él para que cuando mi cliente haga clic en el botón "Agregar al carrito", termine en la página de pago.

Author: Michael Villeneuve, 2013-03-24

7 answers

Puede usar un filtro en funciones.php:

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;
}

No parece funcionar con ajax, pero funciona desde las páginas de un solo producto, que creo que es lo que usas

En las últimas versiones de WooCommerce (>=2.1) la función se puede simplificar como:

function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
}
 62
Author: Ewout,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-12 18:22:45

Hay una opción dentro de la configuración de WooCommerce que le permite habilitar esta funcionalidad:

Opción para redirigir al visitante a la página del carrito

Simplemente inicie sesión en su panel de administración de WP > WooCommerce > Catálogo y seleccione la opción. Espero que esto ayude!

 11
Author: Devin Walker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-24 00:39:51

He encontrado una solución simple que funciona como magia.

  1. Como lo mencionó @Ewout, marque la casilla que dice "Redirecto a la página del carrito después de la adición exitosa".
  2. Woocommerce > Configuración > Checkout (Pestaña) - donde debe seleccionar las páginas para el carrito y el pago, seleccione la página de pago como la página del carrito (imagen adjunta).

Eso es todo. funciona para mí. introduzca la descripción de la imagen aquí

 9
Author: Shir Gans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-30 14:31:12

@RemiCorson publicó este breve pero beneficioso tutorial:

Http://www.remicorson.com/woocommerce-skip-product-cart-pages /

Menciona el mismo filtro que @Ewout arriba,

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;

}

Pero una línea de código se destaca y es de gran valor para mí para mi proyecto woocommerce actual:

Hay un enlace directo que un usuario puede usar para omitir automáticamente el producto pagina. http://your-site.com/?add-to-cart=37

'37' será reemplazado por su ID de producto.

Esto fue útil para mí para eliminar pasos innecesarios y llevar a los usuarios directamente a la caja desde la página de inicio y otras páginas/publicaciones que no son de woocommerce.

 3
Author: ATutorMe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-19 13:46:32

Filter add_to_cart_redirect está obsoleto en WooCommerce 2.6. Use woocommerce_add_to_cart_redirect en su lugar.

Añada esto a sus funciones.php :

add_filter ('woocommerce_add_to_cart_redirect', function() {
  return WC()->cart->get_checkout_url();
} );
 1
Author: Christian Lescuyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 10:29:16

En la página de la tienda, si desea utilizar ajax y redirigir juntos. El segundo método solo cuando hay alguna condición, puede utilizar este filtro y dejar en Woocommerce ajax ajuste habilitado:

add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2); 

Para eliminar en un atributo de clase ajax_add_to_cart y cambiar el valor href a la página url de pago;

En mi caso de plantilla:

public function add_quantity_input($text = null, $product = null) {
    global $product, $woocommerce;

    if ( $text != null and $product != null  ) {
        if(ismycondition($product->id)) {
            $s = explode('class="', $text);
            $s[2]=str_replace('ajax_add_to_cart', '', $s[2]);
            $text = implode('class="', $s);

            $text = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.$woocommerce->cart->get_checkout_url().'"$3>', $text);
        }
    }

    return $text;
}

Espero que esta ayuda.

 0
Author: jedi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-12 15:40:53

Ninguna de las soluciones realmente funcionó para mí, el filtro add_to_cart_redirect se activaba en cada página,no solo en el carrito.Hice algunas modificaciones en la respuesta sugerida.

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
  function redirect_to_checkout() {
  if(is_cart()){
    $checkout_url = WC()->cart->get_checkout_url();
  ?>
  <script>
  location = '<?=$checkout_url?>';
  </script>
  <?php 
  }
}
 0
Author: nikksan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 08:00:55