php - woocommerce_login_redirect 到购物车(如果不为空)
问题描述
好的,这很奇怪,听我说:
function ts_redirect_login( $redirect, $user){
if(!WC()->cart->is_empty()){
$redirect = wc_get_cart_url();
}
else{
$redirect = get_home_url();
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'ts_redirect_login', 10, 2 );
如果用户浏览站点(未登录),添加项目并登录,则此方法有效。登录后,他将被重定向到购物车。
如果用户在登录时将商品添加到购物车,则此方法不起作用,退出站点并返回登录。登录后它将用户重定向到主页,就好像购物车中没有商品一样。一旦登录,如果我去购物车它不是空的,但重定向没有发生。
所以我的问题是:当他登录时,如何重定向在先前会话中添加项目的用户?
var_dump 仅在 is_empty() 添加一个有意义的未登录项目时才显示错误,它不知道我将登录哪个用户以及我的购物车中是否有产品。但是一旦我登录,如果我有物品,我不能被重定向到购物车吗?
解决方案
function ts_redirect_login( $redirect, $user ) {
$saved_cart = '';
$saved_cart_meta = get_user_meta( $user->ID, '_woocommerce_persistent_cart_' . get_current_blog_id(), true );
if ( isset( $saved_cart_meta[ 'cart' ] ) ) {
$saved_cart = array_filter( (array) $saved_cart_meta[ 'cart' ] );
}
if ( $saved_cart || !WC()->cart->is_empty()) {
$redirect = wc_get_cart_url();
} else {
$redirect = get_home_url();
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'ts_redirect_login', 10, 2 );
这就是你要找的
推荐阅读
- c++ - 在 qml 中对枚举类使用 Q_ENUM 和 Q_PROPERTY
- azure-data-lake-gen2 - Appnexus 到 Azure 数据迁移错误(使用 sas)
- html - 我可以从中心填充网格容器吗?
- python - 如何在文件的每一行中搜索单词并在python中打印它的下一个值
- python - 使用 for 循环和追加创建新 df 的更快方法
- regex - 用多个大写字母分割文本
- opencv - 使用 OpenCV 访问 IP Camera 的要求
- node.js - 与 mongodb 异步且未正确更新
- c# - c# 编译器在开始代码生成之前会执行多少次代码分析迭代?
- python - python删除超过x天的文件夹