从购物车页面上的添加到购物车URL中删除“?Add-to-Cart=product-id”

时间:2017-09-27 作者:kireirina

我们在网站上多次使用这种类型的添加到购物车URL:http://yourdomain.com/cart/?add-to-cart=25. 问题是在重定向到购物车页面后,如果客户改变主意并删除最近添加的产品,购物车页面将加载并再次添加,因为URL上有“?添加到购物车=25”。

我的问题是,是否可以在重定向到购物车后删除“?添加到购物车=产品id”部分?

2 个回复
SO网友:dev_masta

解决方案是失去?add-to-cart=25URL的一部分。最简单的方法是使用javascriptHistory API:

history.pushState(null, "", location.href.split("?")[0]);
文档:https://developer.mozilla.org/en-US/docs/Web/API/History_API

DOM窗口对象通过历史对象提供对浏览器历史的访问。它公开了一些有用的方法和属性,这些方法和属性允许您在用户的历史记录中来回移动,并且--从HTML5开始--manipulate the contents of the history stack.

它是在HTML5中引入的,所以旧的浏览器可能不支持它。

SO网友:xnagyg

这是我的解决方案(如果用户单击自定义的“添加到购物车”按钮,则重定向到签出页面):

function xnagyg_redirect_checkout_add_cart( $url ) {
  //continue only if we found add-to-cart in the URL!!!
  if ( empty( $_GET[\'add-to-cart\'] ) || ! is_numeric( $_GET[\'add-to-cart\'] ) ) {
    return false; //do not redirect
  }
  $url = get_permalink( get_option( \'woocommerce_checkout_page_id\' ) ); //Redirect to Checkout page
  return $url;
}

add_filter( \'woocommerce_add_to_cart_redirect\', \'xnagyg_redirect_checkout_add_cart\' );

结束

相关推荐