Измените налоговый класс в соответствии с полем, выбранным при оформлении заказа.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Измените налоговый класс в соответствии с полем, выбранным при оформлении заказа.

Сообщение Anonymous »

На основе кода отсюда https://stackoverflow.com/a/77626133/21533506 у меня есть следующий код:

Код: Выделить всё

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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»