WooCommerce清理购物车错误/错误?

时间:2017-09-07 10:35:40

标签: php wordpress woocommerce cart clear

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

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

代码:

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

清除购物车。

我希望你已经明白我在说什么。 我尝试过各种各样的params而不是“clear”,每次都发生同样的事情。

当我也尝试回应

中的内容时
function woocommerce_clear_cart_url() 

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

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试以下代码

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>

答案 1 :(得分:0)

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

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() );
    }
}