use*_*838 2 wordpress checkout woocommerce
如果检测到用户未登录,默认的 Woocommerce 结帐行为会通过在结帐页面上显示“创建帐户”框来打破许多网络惯例。如果没有任何添加的说明,新用户可能不知道该怎么做。
我想要的顺序是:
用户结帐 > 检查登录 >
这正是基于购物车的 WooCommerce 登录重定向中的情况
但是,让我感到不舒服的是,在上述情况下,一旦用户登录,如果购物车不是空的,他/她将被重定向到结帐页面。如果用户的购物车不是空的,即使他/她还不想结帐,他/她也根本无法进入我的帐户。
对这个有什么想法吗?
尝试一下,无需更改核心代码
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>';
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
第二个回答有一个问题,用户登录后总是重定向结帐页面,直到购物车变空它才站在我的帐户页面上!!如果用户未登录,
此代码将用户重定向到我的帐户页面进行登录而不是结帐,然后在登录后它会自动重定向到结帐页面。
步骤 1:
在function.php 中添加此代码
add_action('template_redirect','check_if_logged_in');
function check_if_logged_in()
{
$pageid = get_option( 'woocommerce_checkout_page_id' );// your checkout page id
if(!is_user_logged_in() && is_page($pageid))
{
$url = add_query_arg(
'redirect_to',
get_permalink($pageid),
site_url('/my-account/') // your my acount url
);
wp_redirect($url);
exit;
}
}
Run Code Online (Sandbox Code Playgroud)
第 2步:
在/wp-content/plugins/woocommerce/templates/myaccount/my-account.php的末尾添加此代码
<?php
$quark_web_solution_redirect = $_GET['redirect_to'];
if (isset($quark_web_solution_redirect)) {
echo '<script>
window.location.href = "'.$quark_web_solution_redirect.'";
</script>';
}
?>
Run Code Online (Sandbox Code Playgroud)