登录后根据用户元数据在 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 );
我正在尝试检查用户元数据是否为空。如果为空,则将用户重定向到一个页面,否则重定向到默认页面。
但是我下面的代码只是重定向到默认页面。
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 );