Woocommerce – Schaltflächen „In den Warenkorb“ und „Jetzt kaufen“ auf den Produktseiten

Lesezeit: 4 Minuten

Ich versuche, eine Schaltfläche „Jetzt kaufen“ in Woocommerce auf der Produktseite hinzuzufügen, daher gibt es zwei Schaltflächen:

  1. in den Warenkorb legen
  2. Jetzt kaufen (wodurch das Produkt in den Warenkorb gelegt und zur Kasse weitergeleitet wird)

Ich möchte immer noch, dass „Zum Warenkorb hinzufügen“ wie gewohnt funktioniert.

Wie kann ich das erreichen? Danke vielmals.

http://wordpress.org/extend/plugins/woocommerce/

Ich habe es geschafft, dies zu lösen, indem ich diesen Blog-Beitrag gefunden habe http://samplacette.com/skip-shopping-cart-in-woocommerce/.

Wenn jemand anderes feststellt, dass er Schwierigkeiten hat, dies zu implementieren, habe ich es so gemacht (möglicherweise nicht die beste Lösung, aber es funktioniert für mich):

Ich habe folgenden Text in mein Theme functions.php kopiert

/** * Set cart item quantity action *
* Only works for simple products (with integer IDs, no colors etc) *
* @access public
* @return void */
function woocommerce_set_cart_qty_action() { 
    global $woocommerce;
    foreach ($_REQUEST as $key => $quantity) {
    // only allow integer quantities
    if (! is_numeric($quantity)) continue;

        // attempt to extract product ID from query string key
        $update_directive_bits = preg_split('/^set-cart-qty_/', $key);
        if (count($update_directive_bits) >= 2 and is_numeric($update_directive_bits[1])) {
            $product_id = (int) $update_directive_bits[1]; 
            $cart_id = $woocommerce->cart->generate_cart_id($product_id);
            // See if this product and its options is already in the cart
            $cart_item_key = $woocommerce->cart->find_product_in_cart( $cart_id ); 
            // If cart_item_key is set, the item is already in the cart
            if ( $cart_item_key ) {
                $woocommerce->cart->set_quantity($cart_item_key, $quantity);
            } else {
                // Add the product to the cart 
                $woocommerce->cart->add_to_cart($product_id, $quantity);
            }
        }
    }
}

add_action( 'init', 'woocommerce_set_cart_qty_action' );

Und dann habe ich modifiziert Thema/woocommerce/single-product/add-to-cart/simple.php (stellen Sie sicher, dass Sie die Plugin-Dateien nicht midifizieren, erstellen Sie also eine Kopie und fügen Sie sie in Ihre Designdateien in einen Woocommerce-Ordner ein) zu folgendem (beachten Sie, dass ich habe meine Mengeneingabe aus meinem Code entfernt. Wenn Sie sie also benötigen, stellen Sie sicher, dass Sie den Code überarbeiten, damit er funktioniert):

<form class="cart single-product" method="post" enctype="multipart/form-data">
    <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
    <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
    <button type="submit" class="single_add_to_cart_button button alt cart-buttton add-to-cart"><?php echo $product->single_add_to_cart_text(); ?></button>
    <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
</form>

<form class="cart single-product" method="post" enctype="multipart/form-data" action="/checkout?set-cart-qty_<?php echo $product->id;?>=1">
    <button type="submit"  class="single_add_to_cart_button button alt cart-buttton buy-now">Buy Now</button>
    <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
</form>

Ich habe eine weitere Schaltfläche neben der vorhandenen Schaltfläche „In den Warenkorb“ hinzugefügt, aber das Formular getrennt. Der Blog-Beitrag erwähnt, dass Sie stattdessen einen Hyperlink hinzufügen können, aber das Obige hat für mich in Bezug auf die Art und Weise funktioniert, wie ich die Seite anpassen musste (etwas langwieriger).

Aus dem Blog:

Gebrauchsanweisung:

Erstellen Sie einen Hyperlink mit einem Abfragestring-Argument wie dem folgenden: ?set-cart-qty_= Wo steht die numerische ID Ihres Produkts (etwa „167“) und ist die >Menge, die Sie im Einkaufswagen des Benutzers festlegen möchten (höchstwahrscheinlich diese wird nur “1”) sein).

Beispiel-URL, um den Benutzer mit genau einem Produkt mit der ID „167“ im Warenkorb zur Kasse zu schicken:

http://my.website.com/checkout?set-cart-qty_167=1

Ich hoffe, das obige hilft jedem, der ein ähnliches Problem hat wie ich.

Nach langem Suchen war ich überrascht, dass dies kein Standard ist. Hier war meine Lösung:

Verwenden Sie entweder einen Hook wie “woocommerce_single_product_summary”

Oder kopiere wp-content/plugins/woocommerce/templates/single-product/add-to-cart/simple.php in dein Child-Theme wie: wp-content/themes/child-theme/woocommerce/single-product/add- to-cart/simple.php

Bearbeiten Sie die Datei und fügen Sie den folgenden Code an der Stelle hinzu, an der die Schaltfläche angezeigt werden soll:

<div class="express-checkout-wrapper">
            <a id="dc_express_checkout" href="https://stackoverflow.com/checkout/?add-to-cart=<?php%20echo%20get_the_ID();%20?>">
                Purchase
            </a>
        </div>

Jetzt ist das einzige Problem, dass die Schaltfläche Sie zur Kasse bringt und das richtige Produkt hinzufügt, aber ohne die richtige Menge, wenn Sie es geändert haben, also habe ich js in meiner custom.js-Datei verwendet, die in der Fußzeile eingereiht ist:

// Add and change quantity to express checkout button when the quantity is updated
if($('.cart .qty').length){
    var originalUrl = $('#dc_express_checkout').attr('href');
    $('.cart .qty').change(function(){
        var url = originalUrl + '&quantity=' + $(this).val();
        $('#dc_express_checkout').attr('href', url);
    });
}

Sie können die URL ändern von:

href="https://stackoverflow.com/checkout/?add-to-cart=<?php%20echo%20get_the_ID();%20?>"

zu:

href="https://stackoverflow.com/cart/?add-to-cart=<?php%20echo%20get_the_ID();%20?>"

Wenn Sie möchten, dass die Schaltfläche zum Warenkorb statt zur Checkout-Seite führt.

1004090cookie-checkWoocommerce – Schaltflächen „In den Warenkorb“ und „Jetzt kaufen“ auf den Produktseiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy