Afficher un avis à la caisse de Woocommerce si le poids est supérieur ou égal à 224 kg [dupliquer]

Nov 19 2020

J'ai vu quelques réponses similaires, mais pas tout à fait ce dont j'ai besoin. Fondamentalement, je veux simplement afficher un avis à afficher à la caisse lorsque le poids total de la commande est de 225 kg ou plus.

Basé sur le poids affiché et le message de poids restant sur le panier woocommerce et le code de réponse de paiement , voici mon code adapté:

    // Display a custom shipping message when cart weight exeeds a limit
add_filter( 'woocommerce_before_cart', 'display_total_weight_notice' );
add_filter( 'woocommerce_before_checkout_form', 'display_total_weight_notice' );
function display_total_weight_notice( $message ) { // DEFINE the allowed weight limit $cart_total_weight = WC()->cart->get_cart_contents_weight();

    if( cart_total_weight >= 225 ) :

    wc_print_notice( sprintf(
        __( 'Your order has a total weight of %s. This will be shipped via Pallet Delivery, by continuing you agree to the following:<br><br> 
        > Ground/Road around the property will be flat, level and solid. <br> 
        > Standard Delivery will take place between 9am-5pm and will require a signature. You can advise a safe place to leave your order, however this is at the driver’s discretion to do so, we hold no responsibility if left. <br> 
        > Where a delivery cannot be made due to access, a re-delivery can be made at your request for a charge of £45.00 per pallet on the following day or when arranged. <br> 
        > In any cases of Damages/Shortages you will note this on the delivery note when you Sign for it, and then contact us right away. No refunds/replacements will be given if damages are not noted at delivery. <br> 
        > Pallet Orders cancelled en route, or returned due to ground Conditions/Access Restrictions will incur a return fee of £45 per pallet (subject to location), deducted from any refunds given. <br> 
       >  Orders over 1000kg will require your own forklift. 

' ),
        '<strong>' . wc_format_weight($cart_total_weight) . '</strong>',
    ),'notice' );

    endif;
}

Mais ça ne marche pas pour moi.

Réponses

2 Mtxz Nov 19 2020 at 19:10

Je viens de tester votre code et il affiche correctement un message sur la page du panier.

Il y a juste une faute de frappe dans votre code, il vous manque le $devant votre variable:

if( $cart_total_weight >= 225 ) :

Lors de la définition d'au moins un produit avec un poids, j'obtiens le poids total correct $cart_total_weight = WC()->cart->get_cart_contents_weight();. Si aucun produit dans le panier n'est défini comme poids, il renvoie correctement 0.

Si vous n'avez pas modifié le modèle de panier, cela devrait fonctionner. Si vous l'avez modifié, vérifiez que le do_action()est toujours là.

Ici j'ai édité la limite à 20kg pour afficher le message, avec un produit de 25Kg pour correspondre aux critères.