Я изменил дизайн своей страницы оформления заказа Woo, чтобы показывать поля адреса выставления счета только при выбранном шлюзе Stripe, в противном случае, если выбран проверочный шлюз, я не хочу собирать их адрес выставления счета.Я закончил шаблон, и вызовы jQuery работают как шарм.Однако у меня возникли проблемы с заполнением полей адреса выставления счета и полей адреса доставки.
Вот что у меня есть ... Я добавил следующий фильтр, чтобы оба поля адреса были необязательными:
</p>
<pre><code>add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields');
function custom_override_default_address_fields( $fields ) {
// add or remove billing fields you do not want
$keys = array(
'first_name',
'last_name',
'company',
'address_1',
'address_2',
'city',
'postcode',
'state',
'country'
);
foreach( $keys as $key ) {
$fields[$key]['required'] = false;
}
return $fields;}
Я удаляю этот фильтр, когда шлюз Stripe выбран с помощью jQuery, чтобы поля адреса выставления счета отображались как требуется (и повторно применяются, если выбрана проверка), это поведение работает для полей адреса выставления счета.
Теперь мне нужно сделать так, чтобы поля адреса доставки отображались по мере необходимости, поэтому я попытался добавить следующий фильтр: </p>
<pre><code>add_filter( 'woocommerce_checkout_fields', 'set_shipping_required_fields',9999 );
function set_shipping_required_fields( $fields ) {
// add or remove billing fields you do not want
$shipping_keys = array(
'first_name',
'last_name',
'address_1',
'city',
'postcode',
'state',
);
foreach( $shipping_keys as $key ) {
$fields['shipping']['shipping_'.$key]['required'] = true;
}
return $fields;
}
При этом успешно будут отображаться shipping_first_name и shipping_last_name как требуетсяоднако остальные поля доставки изначально отображаются как требуется, но через долю секунды возвращаются к необязательным.У кого-нибудь есть советы, что я делаю неправильно, чтобы сделать поля адреса выставления счета необязательными и поля адреса доставки обязательными?Есть ли лучший способ?