
Есть сайт на WordPress и WooCommerce. На текущий момент у меня несколько условий для покупки товаров пользователями:
1. Если пользователь не зарегистрирован и он покупает любой товар, кроме подписки, он спокойно оформляет заказ и система автоматически создает ему аккаунт.
2. Если пользователь зарегистрирован, но забыл войти под своим логином, он также спокойно оформляет заказ, просто войдя под своим логином на странице оформления заказа.
3. Если пользователь не зарегистрирован и хочет купить подписку, его перекидывает на регистрацию, оттуда на страницу редактирования профиля, где заполняет кастомные поля и возвращается обратно на оформление заказа.
4. Теперь мне нужно зарегистрированного, но не вошедшего под своим логином пользователя, который хочет купить подписку, перенаправить на форму входа. А оттуда вернуть на страницу оформления заказа.
Первые два условия я создал стандартными настройками 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')));
}
Но он естественно, не работает как нужно. Он перебивает третье условие, ломая его работу.
Буду рад вашей помощи!