Код: Выделить всё
add_filter('woocommerce_billing_fields', 'add_legal_person_billing_field');
function add_legal_person_billing_field($fields)
{
$fields['billing_company']['class'][] = 'hidden';
$fields['billing_legal_person'] = array(
'label' => __('Legal person', 'woocommerce'),
'type' => 'select',
'options' => [
'' => __("Choose an option", "woocommerce"),
'Person' => __("Person", "woocommerce"),
'Company' => __("Company", "woocommerce"),
],
'required' => true,
'priority' => 25,
);
$fields['billing_cui'] = array(
'label' => __('CUI', 'woocommerce'),
'class' => array('form-row-wide', 'hidden'),
'priority' => 26,
);
$fields['billing_nr_reg_com'] = array(
'label' => __('Nr. Reg. Com.', 'woocommerce'),
'class' => array('form-row-wide', 'hidden'),
'priority' => 27,
);
return $fields;
}
// Validate Billing company field
add_action('woocommerce_checkout_process', 'validate_custom_checkout_fields');
function validate_custom_checkout_fields()
{
if (isset($_POST['billing_legal_person']) && $_POST['billing_legal_person'] === 'Company') {
if (empty($_POST['billing_company'])) {
wc_add_notice('Billing company is a required field.', 'error');
}
if (empty($_POST['billing_cui'])) {
wc_add_notice('CUI is a required field.', 'error');
}
if (empty($_POST['billing_nr_reg_com'])) {
wc_add_notice('Nr. Reg. Com. is a required field.', 'error');
}
}
}
// PHP: Replace "(optional)" with required for Billing fields
add_filter('woocommerce_form_field', 'remove_checkout_optional_fields_label', 10, 4);
function remove_checkout_optional_fields_label($field, $key, $args, $value)
{
// Only on checkout page or edit address page
if (((is_checkout() && !is_wc_endpoint_url()) || is_wc_endpoint_url('edit-address'))) {
// Array of fields to check
$fields_to_check = ['billing_company', 'billing_cui', 'billing_nr_reg_com'];
if (in_array($key, $fields_to_check)) {
$optional = ' (' . esc_html__('optional', 'woocommerce') . ')';
$required = ' *';
$field = str_replace($optional, $required, $field);
}
}
return $field;
}
// Hide Billing company field on checkout page load
add_action('wp_head', 'checkout_legal_person_css');
function checkout_legal_person_css()
{
if ((is_checkout() && !is_wc_endpoint_url()) || is_wc_endpoint_url('edit-address')) : ?>
#billing_company_field.hidden,
#billing_cui_field.hidden,
#billing_nr_reg_com_field.hidden {
display: none !important;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78718408/change-the-tax-class-according-to-the-field-selected-when-completing-the-order[/url]