Сохраните настраиваемые поля для мета-пользователя в WooCommerce Checkout для нового пользователя, который регистрируется при оформлении заказа - PullRequest
1 голос
/ 22 апреля 2020

Я добавил несколько пользовательских полей для оформления заказа, которые появляются, только когда пользователь впервые заходит в качестве гостя. Мой процесс оформления заказа требует, чтобы пользователь создал учетную запись для завершения оформления заказа.

Я добавил четыре поля, используя метод woocommerce_form_field, а затем попытался изменить код , указанный в ответе здесь добиться того, чего я хочу. Однако я пробовал несколько проверок, создавая новые учетные записи, чтобы проверить, сохраняются ли значения настраиваемых полей в профиле новых пользователей, но, похоже, они не работают.

Вот один пример решения, которое я пробовал, который не работал:

function reigel_woocommerce_checkout_update_user_meta( $customer_id) {
    if ( ! empty( $_POST['practitioner_license_number'] ) ) {
        $pln = sanitize_text_field( $_POST['practitioner-license-number'] );
        update_user_meta($customer_id, 'practitioner_license_number', $pln);
    }
}
add_action('woocommerce_created_customer', 'reigel_woocommerce_checkout_update_user_meta', 10, 2);

practitioner-license-number - это мое настраиваемое поле, добавленное с использованием метода woocommerce_form_field. Я изменил код по ссылке выше, чтобы функция работала на woocommerce_created_customer, а затем на update_user_meta Я пытаюсь передать идентификатор клиента, чтобы мета сохранялась в созданном профиле пользователя.

Буду признателен за помощь в решении этой проблемы. Большинство вопросов / ответов на эту тему предполагают, что пользователь вошел в систему и уже имеет учетную запись, что здесь не так.

1 Ответ

2 голосов
/ 22 апреля 2020

Из кода, которым вы делитесь, я думаю, что проблема заключается в неправильном переходе на $_POST, возможно practitioner_license_number против practitioner-license-number.

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

Может также помочь поделиться кодом, который вы использовали для пользовательских полей?

function action_woocommerce_created_customer( $customer_id, $new_customer_data, $password_generated ) {
    $pln = 'test';
    update_user_meta( $customer_id, 'practitioner_license_number', $pln);
}
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...