WooCommerce, предотвратить вход после регистрации и перенаправить на пользовательский URL

Вопрос или проблема

Я ищу способ предотвратить автоматический вход после регистрации (т.е. выйти из системы после регистрации) и перенаправить на пользовательский URL. Пока что я могу сделать каждое из этих действий по отдельности, но их комбинация не работает. Для перенаправления после регистрации я использую следующее:

    add_filter( 'woocommerce_registration_redirect', 'custom_redirection_after_registration', 10, 1 );
    function custom_redirection_after_registration( $redirection_url ){
        // Измените URL перенаправления
        $redirection_url = "https://...";
        return $redirection_url; 
    }

При включении функции wp_logout() в приведённую выше функцию, я думаю, что перенаправление после выхода из системы срабатывает. Если это предположение правильное, то, к сожалению, я не знаю, как перенаправить только на этот выход, который происходит сразу после регистрации.

Я надеюсь, что кто-то сможет мне помочь? Буду очень признателен! С уважением

Попробуйте это, может быть, это поможет.

function wc_custom_registration_redirect() {
    wp_logout();
    wp_destroy_current_session();
    return home_url("https://wordpress.stackexchange.com/");
}
add_action('woocommerce_registration_redirect', 'wc_custom_registration_redirect', 99);

Если у кого-то есть такой же вопрос, как у меня: Вот как мне удалось это сделать:

add_filter('woocommerce_registration_redirect', 'custom_redirection_after_registration', 1);

function custom_redirection_after_registration( $redirection_url ){
    // Измените URL перенаправления
    add_action('wp_logout','only_redirect_unverfied_users_after_registration',1);
    wp_logout();
    wp_destroy_current_session();
    $redirection_url = "https://...";
    return $redirection_url;
}



function only_redirect_unverfied_users_after_registration(){
    $redirection_url = "https://";
    wp_redirect( $redirection_url);
    exit();
}

Я пробовал ваши рекомендации выше, но мне интересно, как же сделать так, чтобы после этого не входили в систему, но при этом сохранить все, что они положили в корзину? Этот код работает, но выкидывает человека, и ему нужно снова войти, при этом вся корзина сбрасывается.

Ответ или решение

Чтобы решить задачу предотвращения автоматического входа пользователя после регистрации в WooCommerce и перенаправления его на кастомный URL, потребуется использовать несколько хук функций. Вы правы в том, что оба этих действия встраиваются, но их комбинация требует аккуратного подхода для достижения нужного результата.

Шаг 1: Отключение автоматической авторизации после регистрации

По умолчанию WooCommerce автоматически авторизует нового пользователя сразу после его регистрации. Чтобы отменить это поведение, мы можем воспользоваться хуком woocommerce_created_customer, который срабатывает сразу после создания пользователя. Вам понадобится добавить вызов функции wp_logout() сразу после создания пользователя.

Шаг 2: Перенаправление на кастомный URL

Получив возможность работать с состоянием пользователя после регистрации, мы также можем использовать хук для перенаправления нового пользователя. В данном случае, вам нужно будет использовать хук woocommerce_registration_redirect.

Вот пример кода, который может быть добавлен в файл functions.php вашей темы:

add_action('woocommerce_created_customer', 'custom_user_registration');

function custom_user_registration($customer_id) {
    // Выход из системы
    wp_logout();
    wp_destroy_current_session();

    // Перенаправление пользователя
    if ( isset( $_POST['redirect_url'] ) ) {
        // Укажите ваш URL здесь
        $redirect_url = esc_url( $_POST['redirect_url'] );
        wp_redirect( $redirect_url );
        exit();
    }
}

// Хук для перенаправления после регистрации
add_filter('woocommerce_registration_redirect', 'custom_redirection_after_registration', 10);

function custom_redirection_after_registration($redirection_url) {
    // Укажите ваш URL, на который нужно перенаправить
    $redirection_url = "https://ваш-кастомный-url.ру"; 
    return $redirection_url;
}

О чем стоит помнить

  • Сохранение корзины: Один из ваших вопросов касался сохранения содержимого корзины во время выхода. Важно знать, что выход из аккаунта не удаляет содержимое корзины, пока сессия пользователя не завершена. Чтобы обеспечивать сохранность корзины, убедитесь, что ваш сайт использует стандартные механизмы WooCommerce для работы с корзиной.

  • Тестирование: Как всегда, перед внесением изменений в functions.php, убедитесь, что у вас есть резервная копия вашего сайта. После добавления кода протестируйте функциональность как на локальной среде, так и на сайте.

  • Пользовательский опыт: Убедитесь, что пользователь понимает, что его перенаправляют на другой URL после регистрации. Возможно, стоит добавить сообщение или уведомление на странице регистрации, чтобы предотвратить путаницу.

  • SEO: Анализируйте URL-адреса, на которые происходит перенаправление, чтобы гарантировать, что они оптимизированы для поисковых систем, и проверяйте, чтобы конечные URL способствовали вашему SEO.

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

Оцените материал
Добавить комментарий

Капча загружается...