• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Как сделать редирект пользователя в WooCoomerce?

Dimitry

Форумчанин
Есть сайт на WordPress и WooCommerce. На текущий момент у меня несколько условий для покупки товаров пользователями:

1. Если пользователь не зарегистрирован и он покупает любой товар, кроме подписки, он спокойно оформляет заказ и система автоматически создает ему аккаунт.

2. Если пользователь зарегистрирован, но забыл войти под своим логином, он также спокойно оформляет заказ, просто войдя под своим логином на странице оформления заказа.

3. Если пользователь не зарегистрирован и хочет купить подписку, его перекидывает на регистрацию, оттуда на страницу редактирования профиля, где заполняет кастомные поля и возвращается обратно на оформление заказа.

4. Теперь мне нужно зарегистрированного, но не вошедшего под своим логином пользователя, который хочет купить подписку, перенаправить на форму входа. А оттуда вернуть на страницу оформления заказа.

Первые два условия я создал стандартными настройками WooCommerce. Для третьего условия у меня есть код:

Код:
add_action('template_redirect', 'woo_custom_redirect');

function woo_custom_redirect($redirect) {
    // HERE set your product category (can be term IDs, slugs or names)
    $category = 'subscriptions';

    $found = false;

    // CHECK CART ITEMS: search for items from our product category
    foreach(WC() - > cart - > get_cart() as $cart_item) {
            if (has_term($category, 'product_cat', $cart_item['product_id'])) {
                    $found = true;
                    break;
            }
    }

    if (!is_user_logged_in() && is_checkout() && $found) {
            wp_redirect('/my-account/edit-account/');
            exit();
    }

    if (is_user_logged_in() && !WC() -> cart -> is_empty() && is_account_page()) {
            wp_redirect(get_permalink(get_option('woocommerce_checkout_page_id')));
    }

}

Для четвертого условия я добавил код:

Код:
if (is_user_logged_in() && !WC() -> cart -> is_empty() && is_account_page()) {

            wp_redirect(get_permalink(get_option('woocommerce_checkout_page_id')));

    }

Но он естественно, не работает как нужно. Он перебивает третье условие, ломая его работу.

Буду рад вашей помощи!
 
Сверху Снизу