Мне нужно очистить поля доставки из профиля клиента WordPress после того, как они разместили заказ
Магазин настроен на продажу подарочных корзин, и многие постоянные клиенты захотят отправлять подарочную корзину на другой адрес доставки каждый раз, когда они возвращаются. Они будут использовать ту же платежную информацию, что и в их профиле.
add_filter('woocommerce_checkout_fields','custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['shipping']['shipping_first_name'] = '';
$fields['shipping']['shipping_last_name'] = '';
$fields['shipping']['shipping_company'] = '';
$fields['shipping']['shipping_address_1'] = '';
$fields['shipping']['shipping_address_2'] = '';
$fields['shipping']['shipping_city'] = '';
$fields['shipping']['shipping_postcode'] = '';
$fields['shipping']['shipping_country'] = '';
$fields['shipping']['shipping_state'] = '';
return $fields;
}
Это очищает поля, а также очищает метки полей. Могу ли я отредактировать существующий, чтобы очистить только поля и оставить метки видимыми над каждым полем.
Большое спасибо за поиск
Вы используете не тот хук-фильтр… Следующее очистит предварительно заполненные значения полей доставки:
add_filter( 'woocommerce_checkout_get_value', 'clear_shipping_fields_values', 5, 2 );
function clear_shipping_fields_values( $value, $input ) {
$keys = ['first_name','last_name','company','address_1','address_2','city','postcode','country','state'];
$key = str_replace('shipping_', '', $input);
if ( in_array($key, $keys) && is_checkout() ) {
$value = '';
}
return $value;
}
Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Большое спасибо за Вашу помощь.
Удивительно, что это сработало, даже для настраиваемых полей доставки, таких как «добавить подарочное сообщение».