Ich habe ein Kategorietor, um den Versand für virtuelle Produkte anzuzeigen. Grundsätzlich habe ich Produkte, für die ich keine Versandkosten berechnen möchte, und ich habe sie in einer Kategorie namens Geschenke … aber ich möchte trotzdem eine Lieferadresse. Das Problem ist, dass, wenn ich den von mir erstellten Kategoriefilter verwende, die Adresse nicht in der Reihenfolge gespeichert wird … wenn ich nur verwende …
add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true', 50 );
Es funktioniert super…
Aber wenn ich das Tor darauf setze … speichert es die Werte nicht … hier ist das Tor …
//gifts filter
function HDM_gift_shipping() {
// set our flag to be false until we find a product in that category
$cat_check = false;
// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
// if cat matches gift return true
if ( has_term( 'gift', 'product_cat', $product->id ) ) {
$cat_check = true;
// break because we only need one "true" to matter here
break;
}
}
// if a product in the cart is in our category, do something
if ( $cat_check ) {
add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true', 50 );
}
}
add_action('woocommerce_before_checkout_billing_form', 'HDM_gift_shipping', 100);