我不确定这是否是正确的问题但仍然没有找到任何解决方案。我正在尝试创建一种方法,当用户转到当前Checkout页面以外的页面/站点时,用户的购物车将自动清空。我想知道这是否可行,因为我已经改变了我的定制电子商店的购买流程。我试过在互联网上搜索并尝试了很多方法,但似乎没有用。我目前很难理解WooCommerce的钩子和方式。功能工作。
现在,让我告诉大家我的代码从一开始就如何运作: -
这些是显示整个可用产品的页面的代码。如您所见,当用户想要购买产品时,他们会点击购买按钮,我的电子商店会自动将该产品添加到购物车中。
<?php
// Querying of product information retrieval
$args = array( 'post_type' => 'product', 'posts_per_page' => 4, 'orderby' =>'menu_order', 'order' =>'ASC');
$loop = new WP_Query( $args );
// Display each retrieved product
while ( $loop->have_posts() ) :
$loop->the_post();
// WooCommerce global product variable
global $product;
global $woocommerce;
the_title();
the_excerpt();
echo $product->get_price_html();
$id = $product->id;
?>
/**** Select the product & automatically add to cart ****/
<a href="<?php echo do_shortcode('[add_to_cart_url id="' . $id . '"]'); ?>"><button type="button"> BUY</button></a>
<?php endwhile; ?>
<?php wp_reset_query(); // After the loop ended, quit the custom loop and reset back the main loop
?>
当我的电子商店完成“添加到购物车”过程后,用户将被重定向到结帐页面。它的功能如下。
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
global $woocommerce;
$checkout_url = $woocommerce->cart->get_checkout_url();
return $checkout_url;
}
基本上我要说的是,用户点击购买该产品后会直接重定向到Checkout页面。此方法跳过了单个产品页面&amp;添加到购物车页面。
但是现在,我需要帮助确定正确的方法如果用户离开该页面或退出,购物车将自动为空。可能吗?如果没有,抱歉我缺乏知识。
我一直在尝试下面的代码,因为它是我想要的最接近的代码。关闭,但不能正常工作。
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( !is_page('93') ) {
$woocommerce->cart->empty_cart();
}
}
使用上述功能,每当我尝试返回主页,或者转到其他链接并再次点击购买时,购物车就会继续添加。这件事让我失去理智。我希望你们能帮助我。
答案 0 :(得分:1)
WordPress条件在init
时不起作用(使用is_page('93')
时太早)。所以使用不依赖于WordPress条件的东西:
获取is_page('93')
的页面网址,例如:www.domain.name/checkout
然后在functions.php中使用此代码:
/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ($_SERVER['REQUEST_URI'] !=== '**www.domain.name/checkout**') {
$woocommerce->cart->empty_cart();
}
}
答案 1 :(得分:1)
这是一条非常危险的道路,因为当任何其他标签变为活动状态时,打开网站多个标签的用户将受到清除购物车代码的影响。