登录重定向。检查用户元并相应地重定向

时间:2020-04-09 作者:Jon

我有一个功能,可以检查一些用户元,然后根据它重定向。在我更新网站上的所有内容之前,我很确定这是可行的。

出于某种原因,现在当有人登录时,它总是重定向到/updated-terms-and-conditions/. 我已经检查了发生这种情况后的用户元及其设置是否正确,因此我希望它重定向到/.

有什么想法吗?

function redirect_login_to_tos($redirect) {
    $user_id = get_current_user_id();
    $checkout_tos2 = get_user_meta($user_id, \'checkout_tos2\', true);
    $checkout_tos3 = get_user_meta($user_id, \'checkout_tos3\', true);

    if($checkout_tos2 != \'agreed\' || $checkout_tos3 != \'agreed\'){
        $redirect = \'/updated-terms-and-conditions/\';
    }else{
        $redirect = \'/\';
    }

    return $redirect;
}

add_filter(\'woocommerce_login_redirect\', \'redirect_login_to_tos\');

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

woocommerce_login_redirect 类似于login_redirect 它有一个用户参数。这意味着你不必使用get_current_user_id() (测试时返回0)。

相反,请更换get_current_user_id() 具有$user->ID;.

例如:

function redirect_login_to_tos($redirect, $user) {
    $user_id = $user->ID;
    $checkout_tos2 = get_user_meta($user_id, \'checkout_tos2\', true);
    $checkout_tos3 = get_user_meta($user_id, \'checkout_tos3\', true);

    if($checkout_tos2 != \'agreed\' || $checkout_tos3 != \'agreed\'){
        $redirect = \'/updated-terms-and-conditions/\';
    }else{
        $redirect = \'/\';
    }

    return $redirect;
}

add_filter(\'woocommerce_login_redirect\', \'redirect_login_to_tos\', 10, 2); 

相关推荐

将GravityForm数据存储在phpmyadmin(MySQL)中

我目前正在Wordpress上为客户开发一个小型门户,用户必须提交表单(使用Gravity表单创建)。我希望能够在提交时将这些表单中的数据存储到我在phpmyadmin上创建的自定义数据库中。我已经设置了所有的表和结构,但我不知道如何传递数据。我知道我最终不得不使用“gform\\u after\\u submission”挂钩,我只是不知道从哪里开始。谢谢