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

WordPress/WooCommerce站点登录注册后仅商品页来源跳转回原页实现

WooCommerce登录注册后定向跳转实现方案

需求说明

  • 站点基于WordPress/WooCommerce搭建,为数字下载类站点,要求用户登录后才可购买商品
  • 未登录用户访问商品页时,原购买按钮位置替换为登录/注册按钮
  • 核心要求:用户完成登录/注册操作后,仅当跳转前的上一页面为商品页(路径格式为domain.com/product)时,才将用户跳转回该商品页,其余场景不执行该定向跳转

解决方案

原有代码可保存来源URL并执行跳转,但无法限制仅商品页来源才触发跳转,调整后的可运行代码如下,同时修复了注册表单跳转适配问题,避免了此前出现的严重报错:

// 为未登录用户隐藏加入购物车按钮
add_action( 'init', 'creatorcabin_hide_price_add_cart_not_logged_in' );
function creatorcabin_hide_price_add_cart_not_logged_in() {   
   if ( ! is_user_logged_in() ) {      
      remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}

// 为未登录用户添加登录购买提示按钮
add_action( 'woocommerce_single_product_summary', 'creatorcabin_user_logged_out_disable_add_to_cart', 30 );
function creatorcabin_user_logged_out_disable_add_to_cart() {
   if ( ! is_user_logged_in() ) {  
    $parameter = (is_singular("product")) ? '?product_page=1&my_page_id=' . get_the_ID() : '';
    echo '<div class="login-to-buy-box"><h4 style="color: #E67E22;">请登录后购买!</h4><p style="color: black;">免费登录或注册即可解锁购买按钮,获取下载权限。<a href="/learn/using-our-website/why-do-i-need-an-account-to-buy-stuff/" target="_blank"><p style="font-style: italic;">为什么我需要注册账号购买?</p></a><a href="/my-account' . $parameter . '"><div class="user-bought-singleproduct">登录 / 注册 ></div></a></div>';
    }
}

// 追加来源页隐藏参数
add_action( 'woocommerce_login_form_end', 'creatorcabin_actual_referer' );
function creatorcabin_actual_referer() {
   $product_page = (isset($_GET['product_page'])) ? $_GET['product_page'] : 0;
   $page_id = (isset($_GET['my_page_id'])) ? $_GET['my_page_id'] : 0;
   echo '<input type="hidden" name="product_page" value="' . $product_page . '" /><input type="hidden" name="my_page_id" value="' . $page_id . '" />';
}

// 登录跳转逻辑
function custom_login_redirect($redirect) {
    if (isset($_POST['my_page_id']) && isset($_POST['product_page']) && intval($_POST['product_page']) === 1) {
        $redirect = get_permalink($_POST['my_page_id']);
    }
    return $redirect;
}
add_filter('woocommerce_login_redirect', 'custom_login_redirect', 10, 1);

// 适配注册表单的参数注入和跳转逻辑
add_action( 'woocommerce_register_form_end', 'creatorcabin_actual_referer' );
add_filter('woocommerce_registration_redirect', 'custom_login_redirect', 10, 1);

本方案感谢WooCommerce开发者社区Slack频道的Idan提供技术支持。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:57:04