Решение с Google
Это решение для Woocommerce 2.1.X!
Я не уверен, что это может помочь. У меня возникла аналогичная проблема, когда мне нужно было выбрать выбранный метод доставки. В файле \wp-content\plugins\woocommerce\includes\wc-cart-functions.php я нашел метод wc_cart_totals_shipping_html().
Внутри этого метода выполняется проверка текущего выбранного способа доставки, который содержит следующий код:
$packages = WC()->shipping->get_packages();
foreach ( $packages as $i => $package ) {
$chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';
}
Я использовал этот код в своих собственных functions.php чтобы проверить выбранный метод доставки, и он работает. Пример:
add_filter( 'woocommerce_billing_fields', 'wc_change_required_fields');
function wc_change_required_fields($address_fields) {
$packages = WC()->shipping->get_packages();
foreach ( $packages as $i => $package ) {
$chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';
}
if ($chosen_method == 'local_delivery') {
$address_fields['billing_address_1']['required'] = true;
// place your changes that depend on the shipping method here...
}
}
Надеюсь, это поможет!