Mensaje "añadido al carrito" de Woocommerce en la página principal(inicio)

30 ago 2016, 15:34:54
Vistas: 28.3K
Votos: 0

Actualmente estoy creando una tienda electrónica con woocommerce. En mi página de inicio hay un slider de productos con el botón añadir-al-carrito debajo de cada producto. Si hago clic en el botón, el producto se añade al carrito correctamente, pero sin ningún mensaje.

Mientras navegaba por Internet, descubrí que los mensajes se pueden añadir en la página de tienda, página de categoría de productos y página de etiquetas de productos (en este artículo). Según ese artículo, debería usar un filtro/hook para capturar el evento add-to-cart y mostrar el mensaje en la página principal.

He intentado esto:

add_filter( 'woocommerce_add_to_cart_message', 'custom_add_to_cart_message' );
function custom_add_to_cart_message() {
    global $woocommerce;
    // Mostrar mensajes de éxito
    if (get_option('woocommerce_cart_redirect_after_add')=='yes') :
        $return_to  = get_permalink(woocommerce_get_page_id('shop'));
        $message    = sprintf('<a href="%s" class="button">%s</a> %s', $return_to, __('Continuar Comprando &rarr;', 'woocommerce'), __('Producto añadido correctamente a tu carrito.', 'woocommerce') );
    else :
        $message    = sprintf('<a href="%s" class="button">%s</a> %s', get_permalink(woocommerce_get_page_id('cart')), __('Ver Carrito &rarr;', 'woocommerce'), __('Producto añadido correctamente a tu carrito.', 'woocommerce') );
endif;
    return $message;
}

pero no ocurre nada. ¿Alguien puede ayudarme?

0
Todas las respuestas a la pregunta 5
0

La solución fue tan simple como debería ser: solo agregué este fragmento de código en mi archivo .php de la página principal:

do_action( 'woocommerce_before_single_product' );
30 ago 2016 16:36:05
0

Este artículo te ayudará con este tema https://docs.woocommerce.com/document/woocommerce-cart-notices/

O puedes colocar el siguiente código en functions.php para obtener el mensaje de éxito

add_filter( 'woocommerce_add_to_cart_message', 'custom_add_to_cart_message' );
function custom_add_to_cart_message() {
    global $woocommerce;
    // Mostrar mensajes de éxito
    if (get_option('woocommerce_cart_redirect_after_add')=='yes') :
    $return_to = get_permalink(woocommerce_get_page_id('shop'));

    $message = sprintf('<a href="%s" class="button">%s</a> %s', $return_to, __('Continuar Comprando &rarr;', 'woocommerce'), __('Producto agregado exitosamente a tu carrito.', 'woocommerce') );

    else :
        $message = sprintf('<a href="%s" class="button">%s</a> %s', get_permalink(woocommerce_get_page_id('cart')), __('Ver Carrito &rarr;', 'woocommerce'), __('Producto agregado exitosamente a tu carrito.', 'woocommerce') );

    endif;
    return $message;
}
function your_woo_ajax_solution( $translation, $text, $domain ) {
if ( $domain == 'woocommerce' ) { // tu nombre de dominio
   if ( $text == 'View Cart' ) { // texto actual que se muestra
       $translation = 'Producto agregado exitosamente a tu carrito.'; // El texto que deseas mostrar
   }
}
return $translation;
}
add_filter( 'gettext', 'your_woo_ajax_solution', 10, 3 ); 
30 ago 2016 15:42:18
0

WooCommerce tiene esto como una función separada

wc_print_notices();

así que simplemente usa eso en tus páginas de plantilla. No necesitas usar echo ni print, solo úsalo como está.

29 sept 2020 04:10:48
1

Copia este código y pégalo en el archivo de tu tema page.php o singlepage.php

do_action('woocommerce_before_single_product');
10 nov 2017 09:15:03
Comentarios

Nota: Esta solución imprimirá todo lo que está enganchado al hook woocommerce_before_single_product. Realmente no recomiendo este enfoque.

Sillo Sillo
20 abr 2018 02:07:46
0

Añade un hook personalizado en la página donde quieras mostrar los mensajes de WooCommerce. Así:

do_action('my_custom_hook');

Una vez que hayas añadido el hook anterior, simplemente coloca el siguiente código en el archivo functions.php de tu tema.

add_action('my_custom_hook', 'show_woo_notices');
function show_woo_notices() {
    wc_print_notices();
}
14 abr 2023 12:59:35