I have added a custom field in WooCommerce checkout like below:
function oc_add_checkout_fields( $fields ) {
$fields['shipping_sub_area'] = array(
'label' => __( 'Sub Area' ),
'type' => 'select',
'class' => array( 'form-row-wide', 'update_totals_on_change' ),
'priority' => 68,
'required' => true,
'id' => 'th_sub_area',
'options' => array(
'' =>'Select',
'Clifton' => 'Clifton1',
'DHA' => 'DHA1',
),
'custom_attributes' => array(),
'validate' => array(),
'default' => '',
);
return $fields;
}
add_filter( 'woocommerce_default_address_fields', 'oc_add_checkout_fields' );
When this field is changed, a pre loader is shown on the your order section in checkout form. I want to perform following: If selected value in above field is Clifton1 then add shipping charges 100 to the cart else add shipping charges 300 to the cart,
I have tried different hooks and actions but I am unable to get the value of custom added field inside the hook. For example I have used following filter:
function filter_woocommerce_cart_shipping_packages( $array ) {
// make filter magic happen here...
//die('I am hre');
echo '<pre>';
print_r($array);
return $array;
};
// add the filter
add_filter( 'woocommerce_cart_shipping_packages', 'filter_woocommerce_cart_shipping_packages', 10, 1 );
In $array
, I am getting:
[destination] => Array
(
[country] => PK
[state] => TA
[postcode] =>
[city] => fds
[address] => fsdf
[address_1] => fsdf
[address_2] => fsd
)
But I am not getting value of shipping_sub_area
or th_sub_area
.
sub_area
, as Woocommerce prepend "billing_" to it, on billing section and "shipping_" on shipping section… You need to do something like on this answers for example…update_totals_on_change
class on the element. For field name, i already haveshipping_
added in field name. th_sub_area is just the HTML ID used in DOM. I need hook or filter that is fired when a field is changed, Thank you