Как перенаправить после входа в профиль BuddyPress в WordPress - PullRequest
0 голосов
/ 10 мая 2019

Я запускаю WordPress 5.1.1 с плагином BuddyPress.

В основном я хочу перенаправить пользователя с пользовательской ссылки для входа на страницу его профиля в BuddyPress.

Я прочитал и проверил почти все коды, предоставленные в Stackoverflow для моего аналогичного запроса, но ни один не работал на моем сайте.

Единственный код работал ниже, но у него есть одна проблема для настроек и настроек моего сайта.

function bp_help_redirect_to_profile(){
  global $bp;
  if( is_user_logged_in() && is_front_page() ) {
   bp_core_redirect( get_option('home') . '/members/' . 
   bp_core_get_username( bp_loggedin_user_id() ) . '/profile' );
  }
}
add_action( 'get_header', 'bp_help_redirect_to_profile',1);

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

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

Я надеюсь, что кто-то может помочь и настроить функцию таким образом.

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2019
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 the user is not site admin,redirect to his/her profile

if( isset( $user->ID) && ! is_super_admin( $user->ID ) )
    return bp_core_get_user_domain( $user->ID );
else
    return $redirect_to_calculated; /*if site admin or not logged in,do not do 
    anything much*/

}

Протестированный код поместите в файл функции вашей активной темы

0 голосов
/ 10 мая 2019

Вы можете использовать для этого действие wp_login.Пожалуйста, проверьте следующий пример.bp_core_get_user_domain() извлечет URL профиля и после успешного входа в систему пользователь будет перенаправлен на URL этого профиля.

function wpso_take_to_profile( $user_login, $user ) {
    if ( function_exists( 'bp_core_get_user_domain' ) ) {
        $url = bp_core_get_user_domain( $user->ID );
        wp_redirect( $url );
        die();
    }
}
add_action('wp_login', 'wpso_take_to_profile', 10, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...