Вопрос или проблема
Если я нажимаю на войти, то это должно привести на страницу входа.
Проблема в том, что когда я ставлю ссылку, она переходит на redirect_to
на главную страницу, но я хочу перейти на страницу профиля пользователя.
Я не хочу использовать плагин для перенаправления на страницу профиля после входа.
У меня есть код для профиля пользователя – <a href="https://wordpress.stackexchange.com/questions/140765/<?php echo bp_loggedin_user_domain(); ?>/profile/edit/"><span>Мой профиль</span></a>
И я хочу вставить эту ссылку в <input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
Это возможно? Есть ли другие предложения?
Если вы используете встроенную функцию для создания формы входа, один из параметров – redirect. справка по функции wp_login_form
Чтобы получить ссылку на ваш профиль, проверьте, когда вы вошли как администратор. Ссылка та же, но представленные параметры разные. По умолчанию это yoursite.com/wp-admin/profile.php
Вы можете написать код в функции в functions.php
и добавить действие к этому
add_filter( 'login_redirect', 'my_rd', 10, 3 );
Function my_rd(){
}
Если вы хотите использовать плагин bp redirect to profile, переходите сюда:
add_filter( 'bp_login_redirect', 'bpdev_redirect_to_profile', 11, 3 );
function bpdev_redirect_to_profile( $redirect_to_calculated, $redirect_url_specified, $user ){
if( empty( $redirect_to_calculated ) )
$redirect_to_calculated = admin_url();
//если пользователь не администратор сайта, перенаправьте его на страницу профиля
if( isset( $user->ID) && ! is_super_admin( $user->ID ) )
return bp_core_get_user_domain( $user->ID );
else
return $redirect_to_calculated; /*если администратор сайта или не вошел, не делайте ничего особенного*/
}
Ответ или решение
Если вы хотите настроить переадресацию пользователей на страницу их профиля после входа в систему на сайте WordPress, вы можете сделать это без использования плагинов. В этом ответе мы рассмотрим, как изменить поведение стандартной переадресации на домашнюю страницу на перенаправление на профиль пользователя.
1. Используйте фильтр login_redirect
WordPress предоставляет фильтр login_redirect
, который позволяет изменить URL-адрес, на который перенаправляется пользователь после входа. Данный фильтр может быть добавлен к файлу functions.php
вашей темы.
Поместите следующий код в файл functions.php
:
add_filter( 'login_redirect', 'my_custom_login_redirect', 10, 3 );
function my_custom_login_redirect( $redirect_to, $request, $user ) {
// Проверяем, что пользователь действительно залогинен
if ( isset( $user->ID ) ) {
// Изменяем URL на адрес профиля пользователя
return bp_loggedin_user_domain() . 'profile/edit/';
}
// Если по каким-то причинам не удалось установить, отправляем на домашнюю страницу
return $redirect_to;
}
Как работает код:
-
Функция
my_custom_login_redirect
принимает три параметра:$redirect_to
: URL, куда пользователь будет переадресован.$request
: URL, который запросил пользователь до авторизации.$user
: объект пользователя, который сейчас вошел в систему.
-
Мы проверяем, действительно ли пользователь вошел в систему, используя
isset( $user->ID )
. -
Если пользователь залогинен, мы возвращаем URL его профиля, который формируется с помощью функции
bp_loggedin_user_domain()
.
2. Используйте форму входа с параметром redirect
Если вы используете функцию wp_login_form()
, вы также можете задать параметр redirect
, указывая URL для перенаправления. Например:
$args = array(
'redirect' => bp_loggedin_user_domain() . 'profile/edit/', // URL для перенаправления после входа
);
wp_login_form( $args );
3. Убедитесь, что ваши страницы защищены
После настройки переадресации убедитесь, что страница профиля доступна только для авторизованных пользователей. Вы можете использовать код для проверки авторизации:
if ( ! is_user_logged_in() ) {
auth_redirect();
}
Заключение
Настройка переадресации после входа в систему – это необходимое улучшение пользовательского опыта. Используя указанные методы, вы можете легко перенаправить пользователей на их профили без установки дополнительных плагинов. Убедитесь, что вы внимательно тестируете новые функции, чтобы гарантировать, что все работает так, как задумано.
Это решение не только улучшает взаимодействие пользователей с вашим сайтом, но также способствует более эффективному управлению их профилями и личными данными.