有以下内容的页面:登录/注册/密码丢失/密码重置。
成功注册或登录后,由于以下原因,用户将被重定向:
function redirect_to_orders_after_login( $redirect, $user ) {
$redirect=site_url(\'/my-account/orders/\'));
return $redirect ;
}
add_filter( \'woocommerce_login_redirect\', \'redirect_to_orders_after_login\', 10, 2 );
由于以下代码,仪表板菜单项被隐藏:
function custom_my_account_menu_items( $items ) {
$items = array(
\'orders\' => __( \'Orders\', \'woocommerce\' ),
\'edit-account\' => __( \'Edit account details\', \'woocommerce\' )
);
return $items;
}
add_filter( \'woocommerce_account_menu_items\', \'custom_my_account_menu_items\' );
但是,如果登录用户访问了site\\uURL/login和其他上述url,则仍会显示我的帐户仪表板。
我尝试使用以下代码,但不相信它涵盖了所有情况,因为访问site\\u url/我的帐户/丢失的密码仍然会重定向到仪表板:
add_action(\'init\', function() {
$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), \'/\');
if ( is_user_logged_in() && ($url_path == \'login\' | $url_path == \'register\' | $url_path == \'lost-password\' | $url_path == \'reset-password\') ) {
wp_redirect( site_url(\'/my-account/orders/\') );
exit();
}
});
也许,覆盖仪表板。php,代码按顺序排列。php中的子主题是解决方案吗?
如何正确地将用户重定向到我的帐户/订单,并隐藏仪表板,使其无法访问和查看?
最合适的回答,由SO网友:Sally CJ 整理而成
如何将用户正确重定向到我的帐户/订单
尝试以下操作:
add_action( \'parse_request\', \'redirect_to_my_account_orders\' );
function redirect_to_my_account_orders( $wp ) {
// All other endpoints such as change-password will redirect to
// my-account/orders
$allowed_endpoints = [ \'orders\', \'edit-account\', \'customer-logout\' ];
if (
is_user_logged_in() &&
preg_match( \'%^my\\-account(?:/([^/]+)|)/?$%\', $wp->request, $m ) &&
( empty( $m[1] ) || ! in_array( $m[1], $allowed_endpoints ) )
) {
wp_redirect( \'/my-account/orders/\' );
exit;
}
}