Для добавления дополнительных полей в адресную форму для доставки в Woocommerce можно использовать функцию add_filter. Вот пример кода, который можно добавить в файл functions.php вашей темы:
```php
function custom_checkout_fields($fields){
$fields['shipping']['shipping_additional_field'] = array(
'label' => __('Дополнительное поле для адреса доставки', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields');
```
Для настройки различных полей в зависимости от выбранного способа доставки, можно использовать условия и проверять значение поля "shipping_method" при оформлении заказа. Вот пример кода, который можно добавить в файл functions.php:
```php
function custom_checkout_fields_based_on_shipping_method($fields){
$chosen_methods = WC()->session->get('chosen_shipping_methods');
$chosen_shipping_method = explode(':', $chosen_methods[0])[0]; // Получаем выбранный метод доставки
if($chosen_shipping_method == 'local_pickup'){
// Для самовывоза
$fields['order']['additional_fields_for_local_pickup'] = array(
'label' => __('Дополнительные поля для самовывоза', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
}elseif($chosen_shipping_method == 'flat_rate'){
// Для доставки по городу
$fields['shipping']['additional_fields_for_local_delivery'] = array(
'label' => __('Дополнительные поля для доставки по городу', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
}
return $fields;
}
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields_based_on_shipping_method');
```
Это лишь примеры кода для добавления и настройки дополнительных полей в зависимости от выбранного метода доставки. Вам может потребоваться дополнительная настройка и адаптация с учетом особенностей вашего сайта и требований вашего бизнеса. Надеюсь, это поможет вам начать решение задачи.