woocommerce_login_redirect, если не пусто - PullRequest
1 голос
/ 29 апреля 2020

Хорошо, это странно, выслушайте меня:

function ts_redirect_login( $redirect, $user){


if(!WC()->cart->is_empty()){
        $redirect = wc_get_cart_url();
}
else{
        $redirect = get_home_url();
}


return $redirect;

}
add_filter( 'woocommerce_login_redirect', 'ts_redirect_login', 10, 2 );

Это работает, если пользователь просматривает сайт (не вошел в систему), добавляет элемент и входит в систему. После входа он перенаправляется на корзина.

Это не работает, если пользователь добавлял товары в корзину при входе в систему, выходит из системы, покидает сайт и возвращается для входа в систему. После входа в систему он перенаправляет пользователя на домашнюю страницу, как будто нет элементов. в корзине. После входа в систему, если я go в корзину, она не пустая, но перенаправление не произошло.

Итак, мой вопрос: как перенаправить пользователя, который добавил элементы в предыдущем сеансе, когда он входит в систему?

var_dump показывает false только для is_empty (), если я добавляю элемент, в который не вошли, что имеет смысл, он не может знать, от какого пользователя я буду входить в систему и есть ли у меня продукты в корзине. Но как только я войду в систему, я не могу быть перенаправлен в корзину, если у меня есть предметы в ней?

1 Ответ

1 голос
/ 30 апреля 2020
function ts_redirect_login( $redirect, $user ) {

    $saved_cart = '';

    $saved_cart_meta = get_user_meta( $user->ID, '_woocommerce_persistent_cart_' . get_current_blog_id(), true );

    if ( isset( $saved_cart_meta[ 'cart' ] ) ) {
        $saved_cart = array_filter( (array) $saved_cart_meta[ 'cart' ] );
    }

    if ( $saved_cart || !WC()->cart->is_empty()) {
        $redirect = wc_get_cart_url();
    } else {
        $redirect = get_home_url();
    }
    return $redirect;
}

add_filter( 'woocommerce_login_redirect', 'ts_redirect_login', 10, 2 );

Это то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...