• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Contacto:  info@graciasseo.com

graciasseo agency
Graciasseo

Graciasseo

Agencia en servicios de posicionamiento SEO

  • SERVICIOS
  • BLOG
Contáctanos

Ajax añadir carrito en productos variables para Woocommerce

junio 19, 2023

Con este código que puedes añadir en el archivo functions.php, activarás en toda la tienda de Woocommerce, la funcionalidad de Ajax para añadir productos variables al carrito sin recargar la página.

Este código suple algunos plugins que realizan esta funcionalidad, pero que no funcionan en las páginas de archivo como categorías o páginas que muestran productos mediante shortcodes.

/* AJAX AÑADIR CARRITO A PRODUCTOS VARIABLES */

if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
   if ( ! function_exists( 'woocommerce_template_loop_add_to_cart' ) ) {
        function woocommerce_template_loop_add_to_cart() {
             global $product;
             if ($product->get_type() == "variable" ) {
                 woocommerce_variable_add_to_cart();
             }
             else {
                 wc_get_template( 'loop/add-to-cart.php' );
             }
         }
    }
    function ajax_add_to_cart_script() {
      wp_enqueue_script( 'add-to-cart-variation', plugins_url() . '/woocommerce-ajax-add-to-cart-variable-products/js/add-to-cart-variation.js', array('jquery'), '', true );
      wp_localize_script( 'add-to-cart-variation', 'AddToCartAjax', array(
        'ajaxurl' => admin_url( 'admin-ajax.php' ),
      ));
    }
    add_action( 'wp_enqueue_scripts', 'ajax_add_to_cart_script' );
    add_action( 'wp_ajax_woocommerce_add_to_cart_variable_rc', 'woocommerce_add_to_cart_variable_rc_callback' );
    function woocommerce_add_to_cart_variable_rc_callback() {
        $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) );
        $quantity = empty( $_POST['quantity'] ) ? 1 : apply_filters( 'woocommerce_stock_amount', $_POST['quantity'] );
        $variation_id = $_POST['variation_id'];
        $variation  = $_POST['variation'];
        $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity );
        if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation  ) ) {
            do_action( 'woocommerce_ajax_added_to_cart', $product_id );
            if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) {
            wc_add_to_cart_message( $product_id );
        }
        $this->get_refreshed_fragments();
        } else {
            $this->json_headers();
        $data = array(
            'error' => true,
            'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id )
            );
        echo json_encode( $data );
        }
        die();
    }  
}

Category iconUncategorized

¿Quieres ganar posicionamiento y visibilidad?

Podemos ayudarte

Footer

Graciasseo OÜ &
Personal Assistant OÜ

Desarrollamos juntos la estrategia SEO Cloud para que los clientes te encuentren.

  • info@graciasseo.com
  • Contacto
  • Aviso Legal
  • Política de Cookies
  • Política de privacidad

© 2025 Graciasseo & Personal Assistant OÜ · By GS