【问题标题】:Clearing cart in WooCommerce在 WooCommerce 中清除购物车
【发布时间】:2017-09-07 10:35:39
【问题描述】:

我在 WP WooCommerce 中遇到了一件奇怪的事情,我自己无法理解也无法解决。

问题是我在结帐页面中添加了一个清除按钮, 该按钮将我重定向到我的主页并添加一个 ?clear 参数。 然后我检查是否设置了该参数,如果设置了,则清除购物车;

代码:

if(isset($_POST["clear_cart"]))
{
    header("Location: https://examplepage.com?clear");
}

add_action( 'init', 'woocommerce_clear_cart_url' );

function woocommerce_clear_cart_url() 
{
    global $woocommerce;

    if(isset( $_GET['clear'])) 
    {
         $woocommerce->cart->empty_cart(); 
    }
}

现在是错误/错误的事情。

此代码有效...一次。我现在会尽力解释。 当我第一次单击清除按钮时 - 它可以工作。 我被重定向到我的主页,购物车被清除,一切正常。

当我再次添加一些产品然后我清除购物车时 我再次被重定向到我的主页(前 4 行代码) 但我的购物车现在还没有清空。要清除它,我必须将我的参数更改为类似

?clear=true

然后我做同样的事情,点击清除购物车按钮后它再次重定向我并且购物车没有被清除。如果我再次将参数更改为

?clear=true

这一次它不起作用 - 因为它以前起作用。将参数更改为

?clear=true1

清空购物车。

我希望你已经明白我在说什么。 我尝试了各种参数而不是“清除”,并且每次发生同样的事情。

当我也尝试在

中回显某些内容时
function woocommerce_clear_cart_url() 

它也只工作过一次。我没有想法。

谢谢。

【问题讨论】:

  • 为什么要先重定向用户然后清除购物车,只需在清除购物车按钮上添加 ajax 调用,并在响应到来时在 ajax 中清除购物车,将用户重定向到主页。
  • 你是对的,那已经改变了。但它仍然无法按预期工作。
  • 同样的事情发生了——我被重定向到我的主页,购物车被清除了(这表明我的购物车里还有一些产品,但是当我去检查它们时,它说它是空的)。跨度>

标签: php wordpress woocommerce cart


【解决方案1】:

试试下面的代码

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;
  if(isset($_POST["clear_cart"]))
  {
    $data= $woocommerce->cart->empty_cart(); 
    if(is_null($data) == 1 ){
     wp_redirect( site_url() ); 
     exit; 
  }
}

假设您的 html 代码如下所示:

<form method="post">
 <input type="submit" name="clear_cart" value="1"> 
</form>

【讨论】:

  • 只有当我再次进入购物车结账页面时才有效。
  • 奇怪的是它总是正确地重定向我,因此 if 语句中的代码运行但购物车无论如何都不会被清除。
  • 效果更好 - 购物车立即被清除,但我没有重定向到我的主页,这意味着 $data 是错误的
  • 因此,一旦购物车为空,您希望将用户重定向到哪里
  • 我猜回到首页
【解决方案2】:

您需要尝试此代码来解决您的错误。

add_action("template_redirect", 'e_coding_hub_redirection_function');

function e_coding_hub_redirection_function(){

global $woocommerce;
    if( is_cart() && WC()->cart->cart_contents_count == 0){
        //wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
        wp_redirect( site_url() );
    }
}

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 2014-01-24
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    相关资源
    最近更新 更多