Обновление клиента billing_company по настраиваемому полю не работает - PullRequest
0 голосов
/ 26 февраля 2020

Я хотел бы сохранить несколько полей Woocommerce в настраиваемом поле, когда я сохраняю клиента в бэк-офисе. Вот мой код:

function nextia_user_update_back_office($user_id)
{
    $customer = new WC_Customer($user_id);
    if (!empty($_POST['zone_de_livraison'])) {
        update_user_meta($user_id, 'zone_de_livraison', trim($_POST['zone_de_livraison']));
    }
    if (!empty($_POST['register_entreprise'])) {

        update_user_meta($user_id, 'register_entreprise', $_POST['register_entreprise']);
        update_user_meta($user_id, 'billing_company', get_title_entreprise($_POST['register_entreprise']));
        update_user_meta($user_id, 'shipping_company', get_title_entreprise($_POST['register_entreprise']));
        update_user_meta($user_id, 'shipping_address_1', get_adresse_entreprise($_POST['register_entreprise']));
        update_user_meta($user_id, 'billing_address_1', get_adresse_entreprise($_POST['register_entreprise']));
    }

    if ($_POST['zone_de_livraison'] == ID_ZONE_DURANNE) {
        write_log('ID_ZONE_DURANNE');
        write_log(ID_ZONE_DURANNE);
        if (!empty($_POST['register_entreprise_text_duranne'])) {
            update_user_meta($user_id, 'register_entreprise', '');
            update_user_meta($user_id, 'shipping_company', trim($_POST['register_entreprise_text_duranne']));
            update_user_meta($user_id, 'billing_company', trim($_POST['register_entreprise_text_duranne']));
        }

        if (!empty($_POST['address_duranne'])) {
            update_user_meta($user_id, 'shipping_address_1', $_POST['address_duranne']);
            update_user_meta($user_id, 'billing_address_1', $_POST['address_duranne']);
        }
    }
}

Конструкция моих настраиваемых полей:

<tbody>
        <tr>
            <th><label for="zone_de_livraison">Zone de livraison</label></th>
            <td>
                <select name="zone_de_livraison" id="zone_de_livraison">
                    <option>Zone de livraison</option>
                    <option value="56"> Gardanne</option><option value="636" selected=""> Jas de bouffan</option><option value="55"> L'Estaque - 13016 - 13015</option><option value="700"> Pôle d'activités des Milles - La Duranne</option>                </select>
                <br>
                <span class="description"></span>
            </td>
        </tr>
        <tr>
            <th><label for="register_entreprise">Nom de l'entreprise (Hors Duranne)</label></th>
            <td>
                <select name="register_entreprise" id="register_entreprise">
                    <option value="empty" selected="" disabled="">Sélectionnez une entreprise</option>
                    <optgroup label="Entreprise (hors Duranne)">
                        <option value="3051"> Allopneus</option><option value="768"> Azorica</option><option value="14264"> BeDia Genomics</option><option value="1860"> CDG 13</option><option value="4295" selected=""> Euler Hermes</option><option value="2370"> VTF vacances</option><option value="4307"> Yellow Working</option>                    </optgroup>
                </select>
                <br>
                <span class="description"></span>
            </td>
        </tr>
        <tr>
            <th><label for="newsletter">Newsletter</label></th>
            <td>
                <input type="checkbox" name="newsletter" <br="">
                <span class="description"></span>
            </td>
        </tr>
</tbody>

И экран моей страницы:

Страница бэк-офиса с выбирает для Зоны доставки и наборов компаний и полей woocommerce пусто после сохранения

Я протестировал несколько решений с:

  • update_user_meta
  • Загрузить WC_Customer и пользователя set_billing_company
  • apply_filters ('woocommerce_billing_fields', get_adresse_entreprise ($ _ POST ['register_entreprise']));

Когда я регистрируюсь, у меня есть хороший возврат для моих функций get_title_entreprise (пример : Euler Hermes) и get_adresse_entreprise (пример журнала: 7bis Avenue Saint Jérome).

Возможно, функция переопределяет мою специфицированную c функцию, но я не вижу, существует ли она действительно!

Впереди «функция сохранения» в порядке (покажи код ниже)

function wooc_save_extra_register_fields($customer_id)
{
    if (isset($_POST['billing_first_name'])) {
        update_user_meta($customer_id, 'first_name', sanitize_text_field($_POST['billing_first_name']));
        update_user_meta($customer_id, 'billing_first_name', sanitize_text_field($_POST['billing_first_name']));
        update_user_meta($customer_id, 'shipping_first_name', sanitize_text_field($_POST['billing_first_name']));
    }
    if (isset($_POST['billing_last_name'])) {
        update_user_meta($customer_id, 'last_name', sanitize_text_field($_POST['billing_last_name']));
        update_user_meta($customer_id, 'billing_last_name', sanitize_text_field($_POST['billing_last_name']));
        update_user_meta($customer_id, 'shipping_last_name', sanitize_text_field($_POST['billing_last_name']));
    }
    if (isset($_POST['billing_phone'])) {
        update_user_meta($customer_id, 'billing_phone', sanitize_text_field($_POST['billing_phone']));
    }
    if (isset($_POST['newsletter'])) {
        update_user_meta($customer_id, 'newsletter', 'oui');
        process_subscribe_form(get_userdata($customer_id), get_zone_adresse($_POST['zone_de_livraison']));
    }
    if (isset($_POST['zone_de_livraison'])) {
        update_user_meta($customer_id, 'zone_de_livraison', sanitize_text_field($_POST['zone_de_livraison']));
    }
    if (isset($_POST['register_entreprise'])
        && isset($_POST['register_entreprise_text'])
        && !empty($_POST['register_entreprise_text'])
        && !empty($_POST['register_entreprise'])
    ) {
        update_user_meta($customer_id, 'register_entreprise', sanitize_text_field($_POST['register_entreprise']));
        update_user_meta($customer_id, 'billing_company', get_title_entreprise($_POST['register_entreprise']));
        update_user_meta($customer_id, 'shipping_company', get_title_entreprise($_POST['register_entreprise']));
        update_user_meta($customer_id, 'shipping_address_1', get_adresse_entreprise($_POST['register_entreprise']));
        update_user_meta($customer_id, 'billing_address_1', get_adresse_entreprise($_POST['register_entreprise']));
    }

    if ($_POST['zone_de_livraison'] == ID_ZONE_DURANNE) {
        if (isset($_POST['register_entreprise_text_duranne']) && !empty($_POST['register_entreprise_text_duranne'])) {
            update_user_meta($customer_id, 'register_entreprise', '');
            update_user_meta($customer_id, 'shipping_company', trim($_POST['register_entreprise_text_duranne']));
            update_user_meta($customer_id, 'billing_company', trim($_POST['register_entreprise_text_duranne']));
        }

        if (isset($_POST['address_duranne']) && !empty($_POST['address_duranne'])) {
            update_user_meta($customer_id, 'shipping_address_1', $_POST['address_duranne']);
            update_user_meta($customer_id, 'billing_address_1', $_POST['address_duranne']);
        }
    }
}

Спасибо за помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...