2017-02-27 2 views
2

J'ai un site WooCommerce où l'ajout d'un produit au panier se fait généralement en cliquant sur un bouton ou un lien avec une URL qui pointe vers l'URL /cart/ avec la chaîne de requête ?add-to-cart=7&quantity=1 ajoutée à ce . Comme ceci:Comment supprimer le paramètre de quantité de WooCommerce URL

http://example.com/cart/?add-to-cart=7&quantity=7

Le numéro add-to-cart=7 est l'ID du produit et, évidemment, quantity=1 est la quantité du produit à ajouter au panier.

Tout cela fonctionne très bien.

Le problème est que l'utilisateur, lorsqu'il se trouve dans l'écran du chariot, peut décider d'augmenter ou de diminuer la quantité. Lorsqu'ils cliquent sur "Mettre à jour le panier", la quantité augmente ou diminue par incréments quelle que soit la valeur de la valeur du paramètre d'URL de quantité. Si quantity=7 dans le paramètre URL et l'utilisateur augmente la quantité de 1 dans l'interface utilisateur du panier et clique sur "Mettre à jour le panier", la quantité est soudainement 15 plutôt que 8. C'est parce qu'il prend la valeur de quantité d'origine de 7 dans l'interface utilisateur du panier, en ajoutant 1 pour la mise à jour de l'interface utilisateur du panier, puis en ajoutant 7 à partir du paramètre URL quantity.

Quelle est la meilleure façon d'empêcher cela? Dois-je supprimer les paramètres d'URL de la session lorsque l'utilisateur visite la page pour la première fois? Où est-ce que je commence même à faire cela? J'ai commencé à écrire un filtre, mais je ne sais évidemment pas ce que je fais.

// Correct the updated quantity by subtracting out the URL parameter already passed from the product page 
function filter_woocommerce_cart_item_quantity($product_quantity, $cart_item_key, $cart_item) {  
    if(isset($_REQUEST['quantity']) && ($_REQUEST['quantity'] != "")) { 
     $product_url_param_qty = $_REQUEST['quantity'] 
     $product_quantity = $product_quantity - $product_url_param_qty 
    } 
    return $product_quantity;  
};  
      
// add the filter  
add_filter('woocommerce_cart_item_quantity', 'filter_woocommerce_cart_item_quantity', 10, 3); 

Répondre

0

Voici le code que je suis arrivé à travailler pour cela:

// Correct the updated quantity by subtracting out the URL parameter already passed from the product page 
function filter_woocommerce_cart_item_quantity($product_quantity, $cart_item_key, $cart_item) { 
    if(isset($_REQUEST['quantity']) && ($_REQUEST['quantity'] != "")) { 
     $product_url_param_qty = $_REQUEST['quantity']; 
     $product_quantity = abs($product_quantity - $product_url_param_qty); 
    } 
    return $product_quantity; 
}; 

// add the filter 
add_filter('woocommerce_cart_item_quantity', 'filter_woocommerce_cart_item_quantity', 10, 3);