WordPress и WooCommerce обновляют скрытое поле после вызова API - PullRequest
0 голосов
/ 27 февраля 2020

Я создал пользовательскую форму регистрации, одно из полей проверяется с помощью стороннего API.

Если поле проходит проверку позже, я обновляю_пользователя_мета.

В настоящее время, если поле не проходит проверку, я добавляю ошибку с помощью wc_add_notice ().

Проблема в том, что мне нужно сделать что-то другое, в зависимости от того, не удалось ли это сделать, поскольку данные не прошли проверку или это не удалось, потому что API не работает. У меня есть логика c, чтобы определить, что это за ошибка, я просто не знаю, что с ней делать.

Вот пример моей функции проверки.

function add_registration_validation($username, $email, $validation_errors) {       
    $billing_npi = sanitize_text_field($_POST['billing_npi']);

    if (isset($_POST['billing_npi']) && empty($_POST['billing_npi'])){ // empty
        $validation_errors->add('billing_npi_error', __(' NPI is required!', 'woocommerce'));
    }else{
        // NPI API Validation
        $npiURL = 'https://npiregistry.cms.hhs.gov/api/?number=' . $billing_npi . '&version=2.1';
        $add_order_response = wp_remote_get($npiURL);

        if (is_array($add_order_response) && !is_wp_error($add_order_response)) {

            // Failed So Send Error 

           $json_decoded_add_order_response = json_decode($add_order_response['body']);

            if ($json_decoded_add_order_response->result_count < 1) {
                $validation_errors->add('billing_npi_error', __(' Your NPI number does not match our records!', 'woocommerce'));
            } 
        }else{

            // Failed Because API is down

            // holds error msg
            // $error_string = $add_order_response->get_error_message();
        }       
    }

    ...

    return $validation_errors;
}

add_action('woocommerce_register_post', 'add_registration_validation', 10, 3);

Вы можете увидеть в комментариях 2 разных типа сбоев.

То, что мне нужно сделать, это ...

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

Вот как я сохраняю данные.

function add_registration_meta($customer_id) {
    if (isset($_POST['billing_npi'])) {
        update_user_meta($customer_id, 'billing_npi', sanitize_text_field($_POST['billing_npi']));
    }
}

add_action('woocommerce_created_customer', 'add_registration_meta');

Надеюсь в этом есть смысл! Я открыт для любых предложений, спасибо!

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