WooCommerce 2.1 Gewählte Versandart erkennen

Lesezeit: 3 Minuten

Ich habe Folgendes verwendet, um zu entscheiden, ob ein Checkout-Feld vollständig sein muss oder nicht …

if ($posted['shipping_method'] == "local_pickup_plus") {
}

Seit dem Update auf WooCommerce 2.1 funktioniert mein Code nicht mehr.

Ich habe versucht, den in $posted gespeicherten Wert wiederzugeben[‘shipping_method’] um zu sehen, ob ich es mit dem richtigen Wert überprüfe, aber es scheint, dass in dieser Variablen nichts mehr gespeichert ist.

Ich habe nach anderen Methoden gesucht, um die gewählte Versandart zu überprüfen, aber ich komme nicht sehr weit.

Jede mögliche Unterstützung würde sehr geschätzt.

Ich habe ein paar Stunden danach gesucht und mich dann entschieden, in die WooCommerce-Dateien einzutauchen …

Das scheint bei mir zu funktionieren:

 $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
 $chosen_shipping = $chosen_methods[0]; 

Ich verwende dies, um eine Mindestsumme für die lokale Lieferung festzulegen, indem ich es so in meiner functions.php verwende

add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;


if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

 $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
 $chosen_shipping = $chosen_methods[0]; 

 $min_spend = 25;
 $cart_total = $woocommerce->cart->cart_contents_total;
 if (($cart_total < 25) AND ($chosen_shipping == 'local_delivery')) {   
    $surcharge = $min_spend-$cart_total;    
    $woocommerce->cart->add_fee( 'Delivery Surchage', $surcharge, true, 'standard' );
}

}

Hoffe das hilft jemandem weiter.

  • Immer noch am arbeiten. Vielen Dank!

    – BradTheBluefish

    20. September 2021 um 18:27 Uhr

  • Das funktioniert etwas, aber ein paar Dinge: Sie verwenden normalerweise nicht global $woocommerce, wenn Sie die gleichen Informationen erhalten können WC() siehe hier: businessbloomer.com/… Außerdem stimmt der von “chosen_shipping_methods” zurückgegebene Wert nicht genau überein, aber er enthält den Namen der Versandmethode, also müssten Sie das tun strpos und nicht ===

    – Uria Victor

    26. September 2021 um 19:40 Uhr

Von dem Quellcode des WooCommerce 2.1 :

$this->posted['shipping_method'] = isset( $_POST['shipping_method'] ) ? $_POST['shipping_method'] : '';

Also wenn die Variable $_POST['shipping_method'] ist dann nicht gesetzt $posted['shipping_method'] wird eine leere Zeichenfolge sein. Ich vermute, das ist deins form hat die nicht method Attribut gesetzt auf post (Es wird vielleicht weggelassen oder Sie versuchen, Links für die Produktübermittlung zu verwenden, nicht die form).

  • Danke für deine Antwort. Das Formularmethodenattribut ist auf post gesetzt. Das fragliche Formular ist der WooCommerce Checkout.

    – Benutzer1503689

    13. März 2014 um 16:46 Uhr

  • Ich habe versucht, ‘$test = $posted[‘shipping_method’]; $woocommerce->add_error( __(‘Ausgewählte Versandart ist’ . $test) );’ und im Bereich der Fehlermeldung ist nur “Ausgewählte Versandart ist” aufgedruckt.

    – Benutzer1503689

    13. März 2014 um 16:47 Uhr

  • Ich fange jetzt an zu glauben, dass es die Priorität ist, in der der Code hinzugefügt wird … ‘add_action(‘woocommerce_after_checkout_validation’, ‘validate_collection_date’, 20, 1);’ also muss man sich das genauer ansehen.

    – Benutzer1503689

    13. März 2014 um 17:02 Uhr

  • Wenn Sie einen Fehler in WooCommerce finden, posten Sie ihn besser dort im Issue Tracker, damit die Entwickler ihn beheben können.

    – Bud Damyanov

    14. März 2014 um 7:53 Uhr

  • Wird erledigt … Danke für Ihre Hilfe.

    – Benutzer1503689

    14. März 2014 um 9:29 Uhr


$_POST[‘shipping_method’] ist ein Array, $whatever = $_POST[‘shipping_method’]$was auch immer[0] = Wert

1384060cookie-checkWooCommerce 2.1 Gewählte Versandart erkennen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy