Lassen Sie die Methode WC_Cart add_to_cart für Gäste in Woocommerce funktionieren

Lesezeit: 3 Minuten

Lassen Sie die Methode WC Cart add to cart fur Gaste in Woocommerce
xDrago

Ich versuche, meinen Code zum Laufen zu bringen. Suche jetzt schon seit Stunden. Ich habe ähnliche Fragen wie diese gefunden. Aber leider scheint niemand eine Lösung zu finden.

In meinem benutzerdefinierten Plugin möchte ich einen bestimmten Artikel zum WC-Warenkorb hinzufügen und den Benutzer direkt zur Kasse weiterleiten. Als eingeloggter Benutzer funktioniert es wie ein Zauber, aber für Gäste zeigt es eine leere Seite an der Kasse (der Shortcode woocommerce_checkout scheint in diesem Fall nichts zurückzugeben). Also habe ich mir eine Überprüfung ausgedacht, ob der Wagen leer ist. Anscheinend liegt es daran, dass auf der “Warenkorb-Seite” “Es befinden sich noch keine Artikel im Warenkorb” angezeigt wird.

Im Code überprüfe ich, ob der Warenkorb noch leer ist, aber es sagt mir, dass es nicht so ist!

Hier ist mein Code:

if(!$wooID = $wpdb->get_var("SELECT wooID FROM ".$wpdb->prefix."ceb_events WHERE id = $event")) die("ERROR GETTING WOOID");

WC()->cart->empty_cart();

if(!WC()->cart->add_to_cart( $wooID, 1 )) die("CART GOT NOT UPDATED. THERE IS AN ERROR 1.");

if(WC()->cart->get_cart_contents_count() == 0) die("CART GOT NOT UPDATED. THERE IS AN ERROR 2."); 

//Here follows the redirect to checkout page

Der Code läuft ohne Fehler. Und es funktioniert zu 100% als eingeloggter User/Admin. Nur nicht als Gast, obwohl ich den Gast-Checkout in den WooCommerce-Einstellungen erlaubt habe.

  • Heyja, es ist wahrscheinlich nichts falsch mit dem Code. Als angemeldeter Benutzer funktioniert es einwandfrei. Es ist nur die Funktion add_to_cart von WooCommerce, die ein Problem zu verursachen scheint, nachdem ein Artikel zum Warenkorb hinzugefügt wurde, wenn kein angemeldeter Benutzer vorhanden ist.

    – xDrago

    21. November 2018 um 22:38 Uhr

  • Wow ja, es funktioniert! Vielen Dank, du bist mein Mann! Können Sie erklären, was los ist?

    – xDrago

    21. November 2018 um 23:34 Uhr


  • Oh, ich habe festgestellt, dass mein Admin-Bereich nicht mehr funktioniert, wenn ich Ihren Code hinzufüge. HTTP 500-Fehler.

    – xDrago

    21. November 2018 um 23:44 Uhr

Lassen Sie die Methode WC Cart add to cart fur Gaste in Woocommerce
LoicTheAztec

Sie müssen die Woocommerce-Benutzersitzung starten, wenn sie nicht angemeldet ist. Sie verwenden also Folgendes:

add_action( 'woocommerce_init', 'force_non_logged_user_wc_session' );
function force_non_logged_user_wc_session(){ 
    if( is_user_logged_in() || is_admin() )
       return;

    if ( isset(WC()->session) && ! WC()->session->has_session() ) 
       WC()->session->set_customer_session_cookie( true ); 
}

Der Code wird in die Datei functions.php Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Es sollte funktionieren.

  • JAWOHL! Danke sehr. Ihre Antwort wird wahrscheinlich einigen Leuten helfen, da ich viele ähnliche Fragen im Netz gesehen habe. Es hat auch den HTTP 500-Fehler behoben. fantastisch

    – xDrago

    21. November 2018 um 23:56 Uhr

  • @xDrago Ich habe den verlinkten Thread in deiner Frage als Duplikat markiert … Dies wird den Leuten helfen, diesen Thread leicht zu finden.

    – LoicTheAztec

    22. November 2018 um 0:05 Uhr


  • Ein Teil von mir möchte fragen, warum WC es ursprünglich so gemacht hat, aber ein größerer Teil von mir ist einfach erleichtert, eine Lösung zu haben. 🙂 Danke.

    – EDA

    18. November 2021 um 18:13 Uhr


924170cookie-checkLassen Sie die Methode WC_Cart add_to_cart für Gäste in Woocommerce funktionieren

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

Privacy policy