根据自定义字段重定向用户

时间:2018-09-13 作者:Peechaya

我是Wordpress的新手,我很确定我要找的东西真的很容易。我对无法工作的函数有问题:

    function user_homepage() {

    if ( is_user_logged_in() ) {
        $args = array(
            \'field\'   => 25,
            );
      $user_homepage = bp_profile_field_data( $args );

            if ($user_homepage == \'Sports\') {
                $redirect_to = home_url(\'/sports/\');
                wp_redirect( $redirect_to );
                exit;
            }

            else if ($user_homepage == \'Tech\') {
                $redirect_to = home_url(\'/tech/\');
                wp_redirect( $redirect_to );
                exit;
            }

    }
}
add_filter(\'login_redirect\',\'user_homepage\',10,3);

Updated version, still doesn\'t work

function redirect_user_homepage() {

        global $bp;

        if ( is_user_logged_in() && is_front_page() ) {
            $args = array(
                \'field\'   => 25,
                \'user_id\' => bp_loggedin_user_id()
                );
          $user_homepage = bp_profile_field_data($args);

                if ($user_homepage == "All") {
                    wp_redirect( home_url() );
                    exit;
                }

                elseif ($user_homepage == "Sports") {
                    wp_redirect( home_url(\'/sports/\') );
                    exit;
                }

                elseif ($user_homepage == "Tech") {
                    wp_redirect( home_url(\'/tech/\') );
                    exit;
                }
        }
    }
add_action( \'template_redirect\', \'redirect_user_homepage\');
如您所见,我想根据我在Buddypress中创建的自定义字段重定向用户。但更重要的是,我不希望他们在登录后被重定向,我希望他们在进入网站主页时被重定向到此页面。

任何帮助都将不胜感激!谢谢

3 个回复
最合适的回答,由SO网友:Peechaya 整理而成

我忘了更新这个主题。我已经解决了我的问题。再次感谢您的帮助!

以下是对我有效的方法:

/**
 * Redirect users to their personalized homepage
 */
function peechaya_user_homepage() {

    global $bp;

    if ( is_user_logged_in() && is_front_page() ) {

        if ( function_exists( \'bp_profile_field_data\' ) ) {
                    $args = array(
                \'field\'   => 25,
                \'user_id\' => bp_loggedin_user_id()
                        );
            $user_homepage = bp_get_profile_field_data( $args );
        }

        if ( isset( $user_homepage ) ) {
            if ( $user_homepage === \'All\' ) {
                /* Default action */
            }
            elseif ( $user_homepage === \'Tech\' ) {
                wp_safe_redirect( site_url( \'/tech/\' ) );
                exit;
            }
            elseif ( $user_homepage === \'Sports\' ) {
                wp_safe_redirect( site_url( \'/sports/\' ) );
                exit;
            }
        }
    }
}
add_action( \'template_redirect\', \'peechaya_user_homepage\' );

SO网友:Ittikorn S.

根据您的功能,如果您想在用户访问网站主页时重定向用户。您可以实现is_front_page() 函数用于检测并仅在frontpage上重定向。

function user_homepage() {

    if ( is_user_logged_in() ) {
        $args = array(
            \'field\'   => 25,
        );

        $user_homepage = bp_profile_field_data( $args );

        if ( is_front_page() ) {

            if ($user_homepage == \'Sports\') {
                $redirect_to = home_url(\'/sports/\');
                wp_redirect( $redirect_to );
                exit;
            }

            else if ($user_homepage == \'Tech\') {
                $redirect_to = home_url(\'/tech/\');
                wp_redirect( $redirect_to );
                exit;
            }
        }
    }
}
add_filter(\'login_redirect\',\'user_homepage\',10,3);

SO网友:dylanjameswagner

您将需要两个独立但相似的函数。我从未使用过BuddyPress,所以我不得不猜测它会根据您的逻辑编写方式返回一个字符串。

我在一个几乎全新的WordPress安装上进行了测试,通过手动设置$user_homepage 变量作为默认值,因为我没有安装BuddyPress。这个function_exists 帮助防止插件停用或丢失时出现问题。

快速查看bp_profile_field_data 告诉我它不包括字段名,所以我会在字段id上使用它。这还意味着它可以/将获得当前用户,因此可能不需要user_id.

快乐的编码。

成功登录重定向

/**
 * Redirect Users to Their Home Page Upon Successful Log in
 */
function my_login_redirect( $redirect_url, $request, $user ) {

    if ( $user && is_object( $user ) && is_a( $user, \'WP_User\' ) ) {
        $user_homepage = null;

        if ( function_exists( \'bp_profile_field_data\' ) ) {
            $user_homepage = bp_profile_field_data( array(
                \'field\' => \'Field Name\',
            ) );
        }

        if ( isset( $user_homepage ) ) {
            if ( $user_homepage === \'Sports\' ) {
                $redirect_url = home_url( \'/sports/\' );
            }
            elseif ( $user_homepage === \'Tech\' ) {
                $redirect_url = home_url( \'/tech/\' );
            }
        }
    }

    return $redirect_url;
}
add_filter( \'login_redirect\', \'my_login_redirect\', 10, 3 );
登录用户首页重定向

/**
 * Redirect Users to Their Home Page When Hitting the Front Page
 */
function my_template_redirect() {

    if ( is_user_logged_in() && is_front_page() ) {
        $user_homepage = null;

        if ( function_exists( \'bp_profile_field_data\' ) ) {
            $user_homepage = bp_profile_field_data( array(
                \'field\' => \'Field Name\',
            ) );
        }

        if ( isset( $user_homepage ) ) {
            if ( $user_homepage === \'Sports\' ) {
                wp_safe_redirect( home_url( \'/sports/\' ) );
                exit;
            }
            elseif ( $user_homepage === \'Tech\' ) {
                wp_safe_redirect( home_url( \'/tech/\' ) );
                exit;
            }
        }
    }
}
add_filter( \'template_redirect\', \'my_template_redirect\' );

结束

相关推荐

为什么我的wp_Safe_REDIRECT输出ERR_TOO_MANY_REDIRECTS错误?

我已经构建了一个演示页面,现在每当用户登录并且没有设置主题时,我想重定向到该页面,我的代码是:function add_admin_page() { if ( empty( $_GET[\'page\'] ) || $_GET[\'page\'] !== \'theme_setup\' ) { return; } if ( ob_get_length() ) { ob_end_clean();