2016-09-06 3 views
2

Ich möchte folgende 2 Fall anzuwenden:WooCommerce Login Umleitung basierend auf Warenkorb

If User not logged in and cart is empty: 
     then redirect user to login and then my account 

If User not logged in and cart has product: 
     then redirect user to login and after login redirect to checkout 

Mein Code:

function wpse_Nologin_redirect() { 

    if (
     ! is_user_logged_in() 
     && (is_checkout()) 
    ) { 
     // feel free to customize the following line to suit your needs 
     $MyLoginURL = "http://example.in/my-account/"; 
     wp_redirect($MyLoginURL); 
     exit; 
    } 
} 
add_action('template_redirect', 'wpse_Nologin_redirect'); 

Above Code funktioniert für meinen ersten Fall in Ordnung. Aber für meinen zweiten Fall, wenn ich Einkaufswagen mit if (sizeof($woocommerce->cart->cart_contents) == 0) {} überprüfe, hört meine Seite auf zu arbeiten.

Ich setze das in theme's functions.php.

Was mache ich falsch?

Dank

Antwort

8

Zuerst zu überprüfen, ob Warenkorb leer ist, Sie WC()->cart->is_empty() verwenden sollten, wie is_empty() eine bedingte Methode von WC_cart class ist.

Nachdem auf Kasse Seite (in beiden Fällen), wenn der Benutzer nicht angemeldet ist, wollen Sie ihn auf my_account Seite umleiten (Login/Konto erstellen Bereich).

Jetzt auf my_account Seite, wenn ein angemeldeter Benutzer etwas in seinem Warenkorb hat, möchten Sie ihn auf der Checkout-Seite umleiten. Hier

ist der Code, den Sie benötigen:

function woocommerce_custom_redirects() { 

    // Case1: Non logged user on checkout page (cart empty or not empty) 
    if (!is_user_logged_in() && is_checkout()) 
     wp_redirect(get_permalink(get_option('woocommerce_myaccount_page_id'))); 

    // Case2: Logged user on my account page with something in cart 
    if(is_user_logged_in() && !WC()->cart->is_empty() && is_account_page()) 
     wp_redirect(get_permalink(get_option('woocommerce_checkout_page_id'))); 
} 
add_action('template_redirect', 'woocommerce_custom_redirects'); 

Natürlich geht so in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in jeder Plugin-Datei.

Dieser Code wurde getestet und funktioniert.


Referenz:

+0

Vielen Dank. Ich bin kein Experte in Woocommere und versuchte es seit den letzten 2 Tagen zu erreichen :) Du rockst .... –

Verwandte Themen