• Hej, finns det något kodexempel på att ta bort vissa fält från kassan baserat på katergori eller etikett?

    Tidigare användes denna kod i en anpassad form-billing.php men det fungerar inte längre och antagligen bättre att lägga det i functions.php:

    <div class="woocommerce-billing-fields">
    	<?php if ( wc_ship_to_billing_address_only() && WC()->cart->needs_shipping() ) : ?>
    		<h3><?php _e( 'Billing & Shipping', 'woocommerce' ); ?></h3>
    	<?php else : ?>
    		<h3><?php global $woocommerce; if (organisation_in_cart()==true && WC()->cart->total==0) { echo 'Din e-postadress'; } else{ _e( 'Billing Details', 'woocommerce' ); } ?></h3>
    	<?php endif; ?>
Visar 1 svar - 1 till 3 (av 3 totalt)
  • Tjena Peter,

    Spana in följande kodexempel:


    <?php
    add_filter( 'woocommerce_checkout_fields' , 'custom_remove_woo_checkout_fields' );
    function custom_remove_woo_checkout_fields( $fields ) {
    // remove billing fields
    unset($fields['billing']['billing_first_name']);
    unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_address_1']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_phone']);
    unset($fields['billing']['billing_email']);
    // remove shipping fields
    unset($fields['shipping']['shipping_first_name']);
    unset($fields['shipping']['shipping_last_name']);
    unset($fields['shipping']['shipping_company']);
    unset($fields['shipping']['shipping_address_1']);
    unset($fields['shipping']['shipping_address_2']);
    unset($fields['shipping']['shipping_city']);
    unset($fields['shipping']['shipping_postcode']);
    unset($fields['shipping']['shipping_country']);
    unset($fields['shipping']['shipping_state']);
    // remove order comment fields
    unset($fields['order']['order_comments']);
    return $fields;
    }

    Du kan lägga den i din functions.php och det enda du behöver lägga till är den logiken du vill ha innan du tar bort fältet.

    Du måste fundera på hur du vill ha logiken i ditt exempel, vad händer tex om det ligger två varor i korgen där den ena har en kategori och en annan inte har det?

    Fick även tips om följande artikel som har ett exempel där man loopar igenom varukorgen: https://nicola.blog/2015/03/03/hide-checkout-fields-based-on-products-in-cart/

    Trådstartare Peter

    (@myamiko)

    Hej, perfekt, Nicolas blog är riktigt bra. Såg nu att functions.php redan har kollen men den fungerar inte längre efter uppdateringar av woocommerce. Ärvd site så jag har dålig koll på den tidigare kodningen 🙂

    // Remove billing-fields when order total = 0
    add_filter( 'woocommerce_checkout_fields', 'remove_checkout_fields_when_ordertotal_is_zero', 20 );
    
    function remove_checkout_fields_when_ordertotal_is_zero( $fields ) {
    	global $woocommerce;
    	// if the total is more than 0 then we still need the fields
    	if ( 0 != $woocommerce->cart->total ) {
    		return $fields;
    	}
    	// return the regular billing fields if we need shipping fields
    	if ( $woocommerce->cart->needs_shipping() ) {
    		return $fields;
    	}
      // we don't need the billing fields so empty all of them except the email
      unset($fields['billing']['billing_first_name']);
      unset($fields['billing']['billing_last_name']);
      unset($fields['billing']['billing_company']);
      unset($fields['billing']['billing_address_1']);
      unset($fields['billing']['billing_city']);
      unset($fields['billing']['billing_postcode']);
      unset($fields['billing']['billing_country']);
      unset($fields['billing']['billing_state']);
      unset($fields['billing']['billing_phone']);
    	return $fields;
    }
Visar 1 svar - 1 till 3 (av 3 totalt)
  • Ämnet ”Woocommerce ta bort fält i kassan beroende på kategori” är stängt för nya svar.