Я хочу скрыть платежный адрес со страницы оформления заказа (не удалять его) и установить адрес выставления счета впервые при регистрации?
Чтобы разрешить отображение на счете .pdf
Я добавляю этот код:
<?php
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_email']);
unset($fields['billing']['billing_city']);
return $fields;
}
И добавив этот код, адрес для выставления счета не был добавлен в счет PDF
Так какой код мне добавить или отредактировать?
Заранее спасибо.
Первый шаг: сделать адрес выставления счета установленным впервые при регистрации
1) Вам необходимо изменить настройки WooCommerce для регистрации.
WooCommerce настройки > учетная запись (Вкладка):
2) Добавление полей биллинга при регистрации пользователя Мой аккаунт страница:
База: Как добавить настраиваемые поля при регистрации пользователя на странице «Моя учетная запись»
Индивидуальный код (скопируйте этот код в файл function.php вашей активной дочерней темы или темы):
if( !is_admin() )
{
// Function to check starting char of a string
function startsWith($haystack, $needle)
{
return $needle === '' || strpos($haystack, $needle) === 0;
}
// Custom function to display the Billing Address form to registration page
function my_custom_function()
{
global $woocommerce;
$checkout = $woocommerce->checkout();
?>
<h3><?php _e( 'Billing Address', 'woocommerce' ); ?></h3>
<?php
foreach ($checkout->checkout_fields['billing'] as $key => $field) :
woocommerce_form_field( $key, $field, $checkout->get_value( $key ) );
endforeach;
}
add_action('register_form','my_custom_function');// Custom function to save Usermeta or Billing Address of registered user
function save_address($user_id)
{
global $woocommerce;
$address = $_POST;
foreach ($address as $key => $field) :
if(startsWith($key,'billing_'))
{
// Condition to add firstname and last name to user meta table
if($key == 'billing_first_name' || $key == 'billing_last_name')
{
$new_key = explode('billing_',$key);
update_user_meta( $user_id, $new_key[1], $_POST[$key] );
}
update_user_meta( $user_id, $key, $_POST[$key] );
}
endforeach;
}
add_action('woocommerce_created_customer','save_address');// Registration page billing address form Validation
function custom_validation()
{
global $woocommerce;
$address = $_POST;
foreach ($address as $key => $field) :
// Validation: Required fields
if(startsWith($key,'billing_'))
{
if($key == 'billing_country' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please select a country.', 'woocommerce' ) );
}
if($key == 'billing_first_name' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter first name.', 'woocommerce' ) );
}
if($key == 'billing_last_name' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter last name.', 'woocommerce' ) );
}
if($key == 'billing_address_1' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter address.', 'woocommerce' ) );
}
if($key == 'billing_city' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter city.', 'woocommerce' ) );
}
if($key == 'billing_state' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter state.', 'woocommerce' ) );
}
if($key == 'billing_postcode' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter a postcode.', 'woocommerce' ) );
}
if($key == 'billing_email' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter billing email address.', 'woocommerce' ) );
}
if($key == 'billing_phone' && $field == '')
{
$woocommerce->add_error( '' . __( 'ERROR', 'woocommerce' ) . ': ' . __( 'Please enter phone number.', 'woocommerce' ) );
}
}
endforeach;
}
add_action('register_post','custom_validation');
}
Второй шаг: скрыв адрес выставления счета от кассы, удалите его
Вам нужно будет использовать CSS, нацеленный на поля блока биллинга с display: none !important;
править.
Других решений пока нет …