it-swarm.com.de

Woocommerce, So bearbeiten Sie die Nachricht "Zum Warenkorb hinzugefügt"

Wenn Sie auf die Schaltfläche "In den Warenkorb" klicken, zeigt der Woocommerce die Nachricht an, den Warenkorb anzeigen. Ich möchte diese Nachricht bearbeiten, die gesamte Spannweite bearbeiten, ein Symbol einfügen usw.

7
Dante

Fügen Sie Ihrer Theme/Functions.php einen Filter hinzu. Der folgende Code überschreibt einfach die vorhandene $ -Meldung. Dadurch wird die $ -Nachricht mit einer nahezu identischen Nachricht überschrieben, die der Nachricht einen "Checkout" -Link voranstellt.

Stellen Sie sicher, dass Sie die $ -Meldung zurückschicken.

Sie können natürlich die vorhandene Nachricht einfach ändern, da die gesamte Sache als Zeichenfolge über den ersten Parameter oder $ message var übergeben wird.

add_filter ( 'wc_add_to_cart_message', 'wc_add_to_cart_message_filter', 10, 2 );
function wc_add_to_cart_message_filter($message, $product_id = null) {
    $titles[] = get_the_title( $product_id );

    $titles = array_filter( $titles );
    $added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', sizeof( $titles ), 'woocommerce' ), wc_format_list_of_items( $titles ) );

    $message = sprintf( '%s <a href="%s" class="button">%s</a>&nbsp;<a href="%s" class="button">%s</a>',
                    esc_html( $added_text ),
                    esc_url( wc_get_page_permalink( 'checkout' ) ),
                    esc_html__( 'Checkout', 'woocommerce' ),
                    esc_url( wc_get_page_permalink( 'cart' ) ),
                    esc_html__( 'View Cart', 'woocommerce' ));

    return $message;
}
12
zmonteca

Haben Sie einen Filter wie den folgenden versucht?

function your_add_to_cart_message() {
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) :
    $message = sprintf( '%s<a href="%s" class="your-style">%s</a>', __( 'Successfully added to cart.', 'woocommerce' ), esc_url( get_permalink( woocommerce_get_page_id( 'shop' ) ) ), __( 'Continue Shopping', 'woocommerce' ) );
else :
    $message = sprintf( '%s<a href="%s" class="your-class">%s</a>', __( 'Successfully added to cart.' , 'woocommerce' ), esc_url( get_permalink( woocommerce_get_page_id( 'cart' ) ) ), __( 'View Cart', 'woocommerce' ) );
endif;
return $message;
}
add_filter( 'wc_add_to_cart_message', 'your_add_to_cart_message' );

Versuchen Sie als Antwort auf das Update der Ajax-Nachricht eine Übersetzungsfunktion wie:

function your_woo_ajax_solution( $translation, $text, $domain ) {
  if ( $domain == 'woocommerce' ) { // your domain name
    if ( $text == 'View Cart' ) { // current text that shows
        $translation = 'Basket updated.'; // The text that you would like to show
    }
  }

  return $translation;
}
add_filter( 'gettext', 'your_woo_ajax_solution', 10, 3 );
4
BradleyD

Wenn Sie sich add-to-cart.js ansehen, wird ein Auslöser added_to_cart ausgelöst, wenn Sie ein Produkt in den Warenkorb legen. Ich habe mich damit beschäftigt und das gemacht

jQuery(document.body).on("added_to_cart", function( data ) {
    jQuery('button.added').nextAll().remove();
    jQuery('button.added').after(' <span style="text-align:center;display:block;" class="cart_updated_ajax"><a href="' + wc_add_to_cart_params.cart_url + '" title="' +
                            wc_add_to_cart_params.i18n_view_cart + '">Cart Updated</a></span>');
});

Hier können Sie alles hinzufügen, nachdem das Produkt zum Warenkorb hinzugefügt wurde.

Hoffentlich hilft das!

2
Abstract

2017 - 2019 - Für Woocommerce 3+ (Bearbeitung mehrerer in den Einkaufswagen aufgenommenen Produkte)

Durch wc_add_to_cart_message_html filter hook ersetzt, wurde das 2. Funktionsargument in $products(anstelle von $product_id)} geändert. 

Sie können den Code innerhalb dieser Hook-Funktion ändern, z. B. in diesem Thread

add_filter( 'wc_add_to_cart_message_html', 'custom_add_to_cart_message_html', 10, 2 );
function custom_add_to_cart_message_html( $message, $products ) {
    $titles = array();
    $count  = 0;

    foreach ( $products as $product_id => $qty ) {
        $titles[] = ( $qty > 1 ? absint( $qty ) . ' &times; ' : '' ) . sprintf( _x( '&ldquo;%s&rdquo;', 'Item name in quotes', 'woocommerce' ), strip_tags( get_the_title( $product_id ) ) );
        $count += $qty;
    }

    $titles     = array_filter( $titles );
    $added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', $count, 'woocommerce' ), wc_format_list_of_items( $titles ) );

    // The custom message is just below
    $added_text = sprintf( _n("%s item has %s", "%s items have %s", $count, "woocommerce" ),
        $count, __("been added to your basket.", "woocommerce") );

    // Output success messages
    if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) ) {
        $return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
        $message   = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Continue shopping', 'woocommerce' ), esc_html( $added_text ) );
    } else {
        $message   = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( wc_get_page_permalink( 'cart' ) ), esc_html__( 'View cart', 'woocommerce' ), esc_html( $added_text ) );
    }
    return $message;
}

Verwandte Themen (für Woocommerce 3+):

2
LoicTheAztec

In Woocommerce 3.0 ist "wc_add_to_cart_message" veraltet und funktioniert nicht mehr. Während also die Antwort von @zmonteca in Ordnung war, funktioniert der Woocommerce 3.0 nicht mehr

Ersetzen Sie einfach "wc_add_to_cart_message" durch " wc_add_to_cart_message_html " und voile ... funktioniert.

add_filter ( 'wc_add_to_cart_message', 'wc_add_to_cart_message_filter', 10, 2 );
function wc_add_to_cart_message_filter($message, $product_id = null) {
$titles[] = get_the_title( $product_id );

$titles = array_filter( $titles );
$added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', sizeof( $titles ), 'woocommerce' ), wc_format_list_of_items( $titles ) );

$message = sprintf( '%s <a href="%s" class="button">%s</a>&nbsp;<a href="%s" class="button">%s</a>',
                esc_html( $added_text ),
                esc_url( wc_get_page_permalink( 'checkout' ) ),
                esc_html__( 'Checkout', 'woocommerce' ),
                esc_url( wc_get_page_permalink( 'cart' ) ),
                esc_html__( 'View Cart', 'woocommerce' ));

return $message;}
0
Amouratoglou

@Dante ist korrekt, die von @BradleyD bereitgestellten Lösungen funktionieren nicht für ajax_add_to_cart auf der Shopseite.

Die von @Abstract bereitgestellte Lösung funktioniert wie erwartet. Ich benutze auch seine Lösung.

Ein weiterer Ansatz von jQuery besteht darin, auf das Ereignis ajaxSuccess des Dokumentobjekts zu warten und die gewünschten Änderungen für die angeklickte Schaltfläche vorzunehmen.

So etwas sollte funktionieren:

$(document).ajaxSuccess(function(event, xhr, settings) {
    if (settings.url.indexOf('?wc-ajax=add_to_cart') !== -1) {
        // You can find the clicked button element under the event.target.activeElement
        // Than you can do whatever you want here. Add new html element and text, etc.
    }

});
0
kostadinovstoil