登录后根据用户元数据在 WooCommerce 中自动重定向

Auto redirection in WooCommerce after login based on user meta data

我正在尝试检查用户元数据是否为空。如果为空,则将用户重定向到一个页面,否则重定向到默认页面。

但是我下面的代码只是重定向到默认页面。

add_filter('woocommerce_login_redirect', 'ac_my_acct_login_redirect');

function ac_my_acct_login_redirect($redirect_to) {
    $user_id = get_current_user_id();
    $father = get_user_meta( $user_id, 'fath_name', true ); 
    $update_pro = esc_url(get_permalink('123')); // the page I want for redirection if metadata is empty
    $my_acct = esc_url(get_permalink( wc_get_page_id( 'myaccount' ) )); // default woocommerce my account page

    if(empty($father)){
    $redirect_to = $update_pro;
    }
    else {
    $redirect_to = $my_acct;
    }
    return $redirect_to;
}

元键 = fath_name即使它有价值,重定向仍然没有按预期工作)。有什么建议吗?

您的代码有一些错误

  • get_current_user_id() 不是必需的,因为 $user 已传递给回调函数
  • get_permalink() 需要一个整数 (123),而不是一个字符串 ("123")
  • 确保页面 ID 确实存在

所以你得到:

function filter_woocommerce_login_redirect( $redirect, $user ) {    
    // Get user meta
    $value = get_user_meta( $user->ID, 'fath_name', true );

    // Empty
    if ( empty( $value ) ) {
        $redirect = get_permalink( 123 );
    } else {
        // Get the "My account" url
        $redirect = get_permalink( wc_get_page_id( 'myaccount' ) );     
    }
    
    return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'filter_woocommerce_login_redirect', 10, 2 );