所以解决方案其实很简单。
首先,我需要修改我的自定义成员登录重定向,以便在重定向URL中包含redirect\\u to部分:
function pb4r_redirect()
{
global $current_user;
$refer=urlencode($_SERVER["REQUEST_URI"]);
$okay_pages = array(4, 10, 12, 13, 191, 200, 1380, 1381, 1382, 1383, 1449, 1631, 1643, 1652, 1653, 1654, 1666, 1718, 1725, 1840, \'Checkout\', \'Cart\', pmpro_getOption(\'billing_page_id\'), pmpro_getOption(\'account_page_id\'), pmpro_getOption(\'levels_page_id\'), pmpro_getOption(\'checkout_page_id\'), pmpro_getOption(\'confirmation_page_id\'));
//if the user is logged out
if(!$current_user->ID
&& !is_home()
&& !is_page($okay_pages)
&& !strpos($_SERVER[\'REQUEST_URI\'], "login")
&& !is_singular( \'post\' )
&& !is_product()
)
{
wp_redirect( \'/member-login\' . \'?redirect_to=\' . $refer );
exit;
}
}
add_action(\'template_redirect\', \'pb4r_redirect\');
然后,我修改了woocommerce函数,将redirect\\u包含到:
function wc_custom_user_redirect( $redirect, $user ) {
// Get the first of all the roles assigned to the user
global $current_user;
$level = pmpro_getMembershipLevelForUser($user->ID);
$myaccount = get_permalink( wc_get_page_id( \'myaccount\' ) );
if( isset( $_REQUEST[\'redirect_to\'] ) ) {
return $_REQUEST[\'redirect_to\'];
}elseif ( $level->id == 2 ) {
$redirect = \'/rookie-dashboard/\';
} elseif ( $level->id == 3 ) {
$redirect = \'/player-dashboard/\';
} elseif ( $level->id == 4 ) {
$redirect = \'/all-star-dashboard/\';
} elseif ( $level->id == 5 ) {
$redirect = \'/coach-dashboard/\';
} elseif ( $level->id == 6 ) {
$redirect = \'/owner-dashboard/\';
} elseif ( $level->id == 7 ) {
$redirect = \'https://corporate.example.com/dashboard/\';
} elseif ( $level->id == 8 ) {
$redirect = \'/dashboard/\';
} else {
$redirect = $myaccount;
}
return $redirect;
}
add_filter( \'woocommerce_login_redirect\', \'wc_custom_user_redirect\', 10, 2 );
现在我可以将用户重定向到请求的页面。如果他们没有请求页面,则会自动重定向到仪表板。如果他们是注册用户,但不是会员计划的一部分,则会重定向到“我的帐户”页面。