Как перенаправить пользователя после успешной регистрации на шаблон страницы?

10 июн. 2011 г., 17:38:27
Просмотры: 53.6K
Голосов: 5

Каждый раз после регистрации я попадаю на страницу wp-login (бэкенд):

Страница входа WordPress после регистрации

Есть ли способ перенаправить пользователей после регистрации на шаблон страницы (фронтенд)?

3
Комментарии

проверьте доступные плагины для примеров кода

kaiser kaiser
10 июн. 2011 г. 17:45:24

@kaiser какие именно плагины?

wyc wyc
10 июн. 2011 г. 18:08:17

Плагины для редиректов - Вашим клиентам это понравится.

kaiser kaiser
10 июн. 2011 г. 19:09:19
Все ответы на вопрос 4
7
14

Вы можете использовать фильтр registration_redirect, чтобы передать свой собственный URL, например:

function wpse_19692_registration_redirect( $url, $result ) {
    $is_error = is_wp_error( $result );

    $user_id = $is_error ? 0 : $result;

    $user = $is_error ? false : get_userdata( $user_id );

    if ( $user ) {
        // Регистрация прошла успешно, сделайте что-нибудь с $user
    }

    return home_url( '/my-page' );
}

add_filter( 'registration_redirect', 'wpse_19692_registration_redirect' );

Поместите этот код в ваш functions.php или плагин :)

10 июн. 2011 г. 18:37:25
Комментарии

Спасибо за ответ, но меня всё ещё перенаправляет на wp-login в админку :( (Я работаю на локальном сервере LAMP, но не думаю, что это причина).

wyc wyc
10 июн. 2011 г. 19:09:23

Вы уверены, что тема с этим кодом активна? И какую версию WP вы используете? У меня всё работало (проверил только что, 3.1.3).

TheDeadMedic TheDeadMedic
10 июн. 2011 г. 19:21:07

ОК, заработало после деактивации bbPress, видимо есть конфликт с этим плагином. Спасибо!

wyc wyc
10 июн. 2011 г. 19:26:00

@TheDeadMedic У меня похожий вопрос, но я регистрируюсь со страницы с пользовательским шаблоном, который включает форму регистрации. Перенаправление не работает, и меня возвращает на главную страницу регистрации с сообщением проверить email для получения пароля. Не могли бы вы взглянуть на мой вопрос? http://wordpress.stackexchange.com/questions/130560/redirect-to-custom-url-after-registering-from-a-page-with-registration-form

Anagio Anagio
21 янв. 2014 г. 00:11:53

@TheDeadMedic Есть ли способ получить ID нового зарегистрированного пользователя в этом фильтре? Подскажите, пожалуйста!

karlosuccess karlosuccess
22 авг. 2023 г. 01:29:45

@karlosuccess Смотрите моё обновление

TheDeadMedic TheDeadMedic
20 янв. 2024 г. 15:16:32

Это работает, спасибо!!!

karlosuccess karlosuccess
21 янв. 2024 г. 21:14:26
Показать остальные 2 комментариев
0

Вот что я использую

<form action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
<input type="text" name="user_login" value="Имя пользователя" id="user_login" class="input" />
<input type="text" name="user_email" value="E-Mail" id="user_email" class="input"  />
<?php do_action('register_form'); ?>
<input type="submit" value="Зарегистрироваться" id="register" />
<input type="hidden" name="redirect_to" value="/success"/>
<p class="statement">Пароль будет отправлен вам на email.</p>
</form>
4 сент. 2012 г. 19:55:51
0

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

add_action( 'pp_after_registration', 'pp_redirect_after_registration', 10, 3 );

function pp_redirect_after_registration( $form_id, $user_data, $user_id ) {

    wp_set_auth_cookie( $user_id );
    wp_set_current_user( $user_id );

    $custom_page_url = 'http://example.com/welcome/';

    wp_redirect( $custom_page_url );
    exit;
}

Примечание: я использую бесплатную версию плагина (https://wordpress.org/support/plugin/ppress), и приведенный выше код работает как в бесплатной, так и в PRO-версии.

8 дек. 2015 г. 11:00:36
0

Я разработал плагин для решения этой проблемы. Также ниже представлен исходный код для редиректа без использования плагинов.

/**
 * Перенаправление пользователей на пользовательский URL в зависимости от их роли после входа
 **/
function wp_woo_custom_redirect( $redirect, $user ) {

    // Получаем первую роль из всех ролей, назначенных пользователю
    $role = $user->roles[0];
    $dashboard = admin_url();
    $myaccount = get_permalink( wc_get_page_id( 'my-account' ) );

    if( $role == 'administrator' ) {

        // Перенаправляем администраторов в админ-панель
        $admin_redirect = get_option('admin_redirect');
        $redirect = $admin_redirect;
    } elseif ( $role == 'shop-manager' ) {

        // Перенаправляем менеджеров магазина в админ-панель
        $shop_manager_redirect = get_option('shop_manager_redirect');
        $redirect = $shop_manager_redirect;
    } elseif ( $role == 'customer' || $role == 'subscriber' ) {

        // Перенаправляем покупателей и подписчиков на страницу "Мой аккаунт"
        $customer_redirect = get_option('customer_redirect');
        $redirect = $customer_redirect;
    } else {

        // Перенаправляем все остальные роли на предыдущую посещённую страницу или на главную, если предыдущая не доступна
        $redirect = wp_get_referer() ? wp_get_referer() : home_url();
    }
    return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'wp_woo_custom_redirect', 10, 2 );

Если вам удобнее работать с плагином, а не с кодом? Вы можете скачать и установить мой плагин "WP WooCommerce Redirect"

13 сент. 2016 г. 10:30:58