添加到购物车错误后Woocommerce重定向

时间:2015-11-24 14:35:43

标签: php wordpress woocommerce

我已经做了几天的研究,但仍然找不到答案。

我在没有单一产品页面的情况下使用Woocommerce。所以我使用http://domain.com/?add-to-cart=ID等网址将商品添加到购物车。

我的产品是单独出售的,这意味着我只能将产品添加到购物车一次。现在,当我第一次添加产品时,我被重定向到购物车页面,这是我想要的。但是,当我第二次添加产品时,它正在刷新我所在的页面。但是我希望被重定向到购物车页面并显示错误消息,例如'您无法将产品添加两次'在购物车页面

当我阅读Woocommerce核心源代码时,我在文件 中的 add-to-cart() 函数中找到了以下代码类-WC-ajax.php

// If there was an error adding to the cart, redirect to the product page to show any errors
        $data = array(
            'error'       => true,
            'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id )
        );

        wp_send_json( $data );

所以我尝试在主题 functions.php 文件中添加以下代码来添加过滤器。

function filter_woocommerce_cart_redirect_after_error($redirect, $product_id) {
  $redirect = esc_url( WC()->cart->get_cart_url() );
  return $redirect;
}

add_filter( 'woocommerce_cart_redirect_after_error', 'filter_woocommerce_cart_redirect_after_error', 10, 2 );

但没有改变。

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:0)

这是构建到WooCommerce的默认选项。您可以在WooCommerce中找到该选项 - >设置 - >产品 - >显示区域。如果选中“成功添加后重定向到购物车页面”选项,则会在将产品添加到购物车后将所有用户重定向到购物车。 按照这个

enter image description here

出现错误时,您可以重定向到购物车页面

H*.1

您还可以使用重定向到结帐页面

Sub RRCLEAN()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim myString As String
With ActiveSheet
RowCount = WorksheetFunction.CountA(range("A:A"))

For i = 2 To RowCount
    myString = Trim(Cells(i, 2).Value)
    If InStr(myString, "RR") > 0 And .Cells(i, 3).Value <> "Memo" And .Cells(i, 3).Value <> "Correction" And .Cells(i, 7).Value <> "Air" Or .Cells(i, 7).Value <> "Printed" Then
        Cells(i, 12).Value = 0
    End If
Next

For i = 2 To RowCount
    myString = Trim(Cells(i, 2).Value)
    If InStr(myString, "RR") > 0 And .Cells(i, 3).Value <> "Memo" And .Cells(i, 3).Value <> "Correction" And .Cells(i, 7).Value = "Air" Or .Cells(i, 7).Value = "Printed" Then
        Cells(i, 12).Value = Cells(i, 8).Value * 0.1
    End If
Next
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

我遇到了确切的问题,并且检查控制台我看到WordPress为页面/商店/添加了404错误?添加到购物车= ID ...管理以通过添加404来使其正常工作。 php文件有一个条件语句,如果页面url = / shop /?add-to-car = ID重定向到checkout,如果没有显示正常的404页面。

   <?php
    $url = $_SERVER['REQUEST_URI'];
      //change "ID" to your product id number (example:/shop/?add-to-cart=22 )
    if($url==="/shop/?add-to-cart=ID"){
    //change "/checkout" if your checkout page has a different url.
    header("Location: /checkout");
    die();
    } else {
     //your normal 404 page code here...
    } ?>