Ich versuche eine Funktion zu finden, die dem Warenkorb automatisch eine Gebühr hinzufügt, wenn die Höhe der darin enthaltenen Produkte 2,9 cm überschreitet.
Ich verwende Woocommerce für unseren einfachen gemeinnützigen Comic-Buchladen. Wir verwenden in Schweden standardmäßig den Versand nach Gewicht, mit einer Sperrgebühr, wenn etwas 3 cm oder mehr beträgt.
Ich habe versucht, diese Antwort von LoicTheAztec in Bezug auf Gebühren basierend auf dem Gesamtgewicht des Einkaufswagens zu ändern, aber ich weiß wirklich nicht, was ich tue, da ich nach dem Speichern des Codes eine leere Seite erhalte.
Der Code, den ich zu ändern versuche, ist dieser:
add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_fee', 30, 1 );
function shipping_weight_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Convert cart weight in grams
$cart_weight = $cart->get_cart_contents_weight() * 1000;
$fee = 50; // Starting Fee below 500g
// Above 500g we add $10 to the initial fee by steps of 1000g
if( $cart_weight > 1500 ){
for( $i = 1500; $i < $cart_weight; $i += 1000 ){
$fee += 10;
}
}
// Setting the calculated fee based on weight
$cart->add_fee( __( 'Weight shipping fee' ), $fee, false );
}
Meine Erfahrung mit PHP ist nicht mehr als das Einfügen von Aktionen in die functions.php meines Child-Themes.
Ich schätze jede Hilfe, die ich bekommen kann.
Der folgende Code fügt eine bestimmte Gebühr hinzu, wenn ein Artikel im Einkaufswagen eine Höhe von bis zu 3 cm hat (Die Maßeinheitseinstellung in Woocommerce muss in sein cm):
add_action( 'woocommerce_cart_calculate_fees', 'shipping_height_fee', 10, 1 );
function shipping_height_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Your settings (here below)
$height = 3; // The defined height in cm (equal or over)
$fee = 50; // The fee amount
$found = false; // Initializing
// Loop through cart items
foreach( $cart->get_cart() as $cart_item ){
if( $cart_item['data']->get_height() >= $height ) {
$found = true;
break; // Stop the loop
}
}
// Add the fee
if( $found ) {
$cart->add_fee( __( 'Height shipping fee' ), $fee, false );
}
}
Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.
Zusatz: Code basierend auf der Gesamthöhe der Artikel im Einkaufswagen:
add_action( 'woocommerce_cart_calculate_fees', 'shipping_height_fee', 10, 1 );
function shipping_height_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Your settings (here below)
$target_height = 3; // The defined height in cm (equal or over)
$total_height = 0; // Initializing
$fee = 50; // The fee amount
// Loop through cart items
foreach( $cart->get_cart() as $cart_item ){
$total_height += $cart_item['data']->get_height() * $cart_item['quantity'];
}
// Add the fee
if( $total_height >= $target_height ) {
$cart->add_fee( __( 'Height shipping fee' ), $fee, false );
}
}
Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.