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

Вы можете использовать фильтр 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
или плагин :)

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

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

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

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

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

Вот что я использую
<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>

Если, как и я, вы используете плагин, например 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-версии.

Я разработал плагин для решения этой проблемы. Также ниже представлен исходный код для редиректа без использования плагинов.
/** * Перенаправление пользователей на пользовательский 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"
