2016-09-06 3 views
2

Я хочу, чтобы применить следующие 2 случая:WooCommerce Войти редирект на основе корзину

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 

Мой код:

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'); 

Приведенный выше код работает отлично для моего первого случая. Но для моего второго случая, когда я проверяю корзину с if (sizeof($woocommerce->cart->cart_contents) == 0) {}, мой сайт перестает работать.

Я помещаю это в функции functions.php темы.

Что я делаю неправильно?

Благодаря

ответ

8

Во-первых, проверить, если корзина пуста, вы должны использовать WC()->cart->is_empty(), поскольку is_empty() является условным методом WC_cart class.

После, на кассе странице (в обоих случаях), если пользователь не вошел в систему, вы хотите перенаправить его в my_account страницу (Войти/создать область счета).

Сейчас на страница my_account, когда зарегистрированный пользователь имеет что-то в своей тележке, вы хотите перенаправить его на страницу проверки.

Вот код, который нужно:

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'); 

Естественно, это идет в function.php файле Вашего активного ребенка темы (или темы), или же в любом файле плагина.

Этот код проверен и работает.


Ссылка:

+0

Большое спасибо. Я не эксперт в woocommere и пытался добиться этого с последних двух дней :) Вы рок ... –

Смежные вопросы