You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改WooCommerce登录短代码实现按用户角色分配登录后跳转路径

代码修改方案

1. 替换原有登录页短代码

将你原本的登录页短代码替换为以下版本,移除固定跳转配置,交由后续角色判断逻辑统一处理跳转:

/**
 * @snippet       WooCommerce 用户登录短代码
*/
add_shortcode( 'wc_login_form', 'bbloomer_separate' );
  
function bbloomer_separate() {
   if ( is_admin() ) return;
   ob_start();
   woocommerce_login_form();
   return ob_get_clean();
}

2. 新增角色区分跳转逻辑

将以下代码添加到主题functions.php文件或者自定义代码片段插件中,实现不同角色登录后跳转不同页面:

add_filter( 'woocommerce_login_redirect', 'custom_role_based_login_redirect', 10, 2 );
function custom_role_based_login_redirect( $redirect_url, $user ) {
    // 校验用户对象是否有效
    if ( !is_a( $user, 'WP_User' ) ) {
        return $redirect_url;
    }
    // 管理员角色跳转至后台仪表盘
    if ( in_array( 'administrator', $user->roles ) ) {
        return admin_url();
    }
    // 客户角色及其他用户跳转至我的账户页面
    return wc_get_page_permalink( 'myaccount' );
}

可选:修复wp-admin默认登录页被强制跳转问题

如果你配置了访问wp-admin强制跳转至自建登录页的规则,可以添加以下逻辑避免管理员登录流程异常:

add_action( 'template_redirect', 'fix_admin_login_redirect_issue' );
function fix_admin_login_redirect_issue() {
    global $pagenow;
    // 仅非登录状态、非登录提交请求时执行跳转规则
    if ( $pagenow === 'wp-login.php' && !is_user_logged_in() && !isset( $_POST['wp-submit'] ) ) {
        // 排除找回密码、重置密码等系统默认操作场景
        $allowed_core_actions = [ 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register' ];
        if ( !isset( $_GET['action'] ) || !in_array( $_GET['action'], $allowed_core_actions ) ) {
            wp_redirect( home_url( '/login/' ) );
            exit;
        }
    }
}

内容的提问来源于stack exchange,提问作者Emmanuel Kuebu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:06:08