Tuesday, February 8, 2022

[FIXED] Why is this conditional removal of WooCommerce billing field not working?

Issue

I've got the following code in my functions.php file that is supposed to check if certain products are in the cart and, if they are, remove a field from the billing set of fields at checkout. However, it's not removing the field, or any other field I try. I'm wondering why that is. Other tutorials I'm following are consistent with this code and say it should work, but for me it's not. What did I get wrong?

/**
 * Check if a specific product ID is in the cart
 */
function dz_product_is_in_the_cart() {
    // Add your special product IDs here
    $ids = array( '10771', '10773', '10774', '10943', '10944', '10945', '10946', '10947', '10948', '10949', '10950', '10951', '10952', '10953', '10943', '10943', '10943', '10943');;

    // Products currently in the cart
    $cart_ids = array();

    // Find each product in the cart and add it to the $cart_ids array
    foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
        $cart_product = $values['data'];
        $cart_ids[]   = $cart_product->id;
    }

    // If one of the special products are in the cart, return true.
    if ( ! empty( array_intersect( $ids, $cart_ids ) ) ) {
        return true;
    } else {
        return false;
    }
}
/**
 * Conditionally remove a checkout field based on products in the cart
 */
function dz_remove_checkout_field( $fields ) {
    if ( dz_product_is_in_the_cart() ) {
        unset( $fields['billing']['billing_first_name'] );
    }

    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'dz_remove_checkout_field' );

The billing_first_name field is a required field. So do I need to do something to unrequire it before I try to unset it?


Solution

The problem was a plugin that was inserting this field was overriding my code that tried to unrequire and remove it. I opted to disable the plugin and add and conditionally control my own field(s) with the code here: https://woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-7



Answered By - user3169905

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.