Я хотел бы сохранить несколько полей 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']);
}
}
}
Спасибо за помощь:)