如果检测到用户未登录,默认的 Woocommerce 结账行为会在结账页面上显示“创建帐户”框,从而打破许多网络惯例。新用户可能不知道在没有任何添加说明的情况下该怎么做。
我想要的顺序是:
用户结帐>检查登录>
- 如果已登录,请继续结帐。
- 如果未登录,则重定向到登录/注册页面 > 继续到结帐页面。
这正是 WooCommerce login redirect based on cart 中的情况
但是,让我感到不舒服的是,在上述情况下,一旦用户登录,如果购物车不为空,他/她将被重定向到结帐页面。如果用户的购物车不为空,即使他/她还不想结账,他/她也根本无法访问 MyAccount。
对这个有什么想法吗?
最佳答案
尝试这个不需要改变核心代码
add_action('template_redirect','check_if_logged_in');
function check_if_logged_in()
{
$pageid = get_option( 'woocommerce_checkout_page_id' );
if(!is_user_logged_in() && is_page($pageid))
{
$url = add_query_arg(
'redirect_to',
get_permalink($pagid),
site_url('/my-account/') // your my account url
);
wp_redirect($url);
exit;
}
if(is_user_logged_in())
{
if(is_page(get_option( 'woocommerce_myaccount_page_id' )))
{
$redirect = $_GET['redirect_to'];
if (isset($redirect)) {
echo '<script>window.location.href = "'.$redirect.'";</script>';
}
}
}
}
关于wordpress - WooCommerce 在结帐前检查并重定向到登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477504/